识别扫描器指纹关键是从日志反推工具类型,依据user-agent(如sqlmap/1.7.2、nikto/2.1.6)、异常请求路径(/phpmyadmin/、/test.php)、sql/xss试探参数及高频404目录爆破行为。

新手识别扫描器指纹,关键不是看日志里“谁在扫”,而是从日志中反推“谁在用什么工具扫”。扫描器有固定行为模式,比如请求路径、User-Agent、请求频率、HTTP头特征等,这些都会在Web访问日志里留下痕迹。掌握几个典型特征,比装一堆工具更直接有效。
看User-Agent字段找明显线索
很多扫描器(尤其是初学者或自动化脚本)会暴露自己的身份:
-
sqlmap:常见UA含
sqlmap/1.7.2、sqlmap/2.0.1等,版本号紧跟在“sqlmap/”后面 -
Nikto:UA通常是
Nikto/2.1.6或Nikto/2.5.0 -
WhatWeb:UA含
WhatWeb/0.4.9、WhatWeb/2.1.1 -
DirBuster / gobuster:部分版本UA为
Java/1.8.0_292+ 自定义路径试探,但无明确标识时需结合请求行为判断 -
空UA或非常规UA:如
-、python-requests/2.28.1、curl/7.81.0配合大量目录爆破,也高度可疑
抓异常请求路径和参数组合
扫描器的“试探性”动作远多于人工访问,重点观察以下几类高频、低语义的请求:
-
通用测试路径:频繁访问
/phpmyadmin/、/wp-admin/、/admin.php、/test.php、/.git/config、/robots.txt(非首次)、/backup.zip -
SQL注入试探参数:URL中带
id=1' and 1=1--、id=1 order by 1、?a=1 and sleep(5)等,且集中在短时间内同一IP发出多条 -
XSS试探片段:如
<script>alert(1)</script>、" onerror=alert(1)出现在GET参数或Referer中 -
目录爆破特征:同一IP在1分钟内请求上百个不同路径(如
/a.php、/b.php、/conf.php),且状态码多为404,响应体极小(
用宝塔或命令行快速筛查可疑IP
如果你用的是宝塔面板:
- 进「日志 → 网站日志」,选目标站点,点「日志扫描」
- 结果页会自动高亮「恶意爬虫IP」和「SQL注入尝试」,点击IP可查看它全部请求记录
- 重点关注该IP的请求时间分布——是否呈均匀间隔(如每2秒一条),这是自动化工具典型节奏
如果用命令行(Linux服务器):
- 查高频IP:
awk '{print $1}' /www/wwwlogs/your-site.log | sort | uniq -c | sort -nr | head -20 - 查含SQL特征的请求:
grep -i "'\|sleep\|union.*select\|information_schema" /www/wwwlogs/your-site.log - 查目录爆破痕迹:
grep -E "/[a-z0-9]{1,4}\.php|/[a-z]{2,3}\.jsp" /www/wwwlogs/your-site.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
结合响应状态码与响应长度辅助判断
真实用户访问失败通常返回404且页面较大(含HTML模板);而扫描器收到404时,响应体往往极小(几十字节),甚至为空:
- 同一IP大量请求返回
404+响应长度≈0 或 23→ 极可能是dirsearch/gobuster - 大量
200但响应体只有1字节或OK→ 可能是探测存活或盲打型工具 - 出现多个
500且伴随SQL报错关键词(mysql_fetch、ORA-、Microsoft OLE DB)→ sqlmap或手工注入试探











