一. 系统要求:Windows NT4/2000/XP/2003
二. 功能简介:
采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它漏洞资料正在进一步整理完善中,您也可以通过本站的"安全文摘"和"安全漏洞"栏目查阅相关说明。
三. 所需文件:
xscan_gui.exe -- X-Scan图形界面主程序
xscan.exe -- X-Scan命令行主程序
checkhost.exe -- 插件调度主程序
update.exe -- 在线升级主程序
*.dll -- 主程序所需动态链接库
使用说明.txt -- X-Scan使用说明
/dat/language.ini -- 多语言配置文件,可通过设置"LANGUAGE\SELECTED"项进行语言切换
/dat/language.* -- 多语言数据文件
/dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件名称(含相对路径)
/dat/config.bak -- 备份配置文件,用于恢复原始设置
/dat/cgi.lst -- CGI漏洞列表
/dat/iis_code.ini -- IIS编码漏洞列表
/dat/port.ini -- 用于保存已知端口的对应服务名称
/dat/*_user.dic -- 用户名字典文件,用于检测弱口令用户
/dat/*_pass.dic -- 密码字典,用于检测弱口令用户
/dat/p0f*.fp -- 识别远程主机操作系统所需的操作系统特征码配置文件(被动识别)
/dat/nmap-os-fingerprints -- 识别远程主机操作系统所需的操作系统特征码配置文件(主动识别)
/dat/wry.dll -- "IP-地理位置"地址查询数据库文件
/dat/*.nsl -- 经过整理的NASL脚本列表
/plugins -- 用于存放所有插件(后缀名为.xpn)
/scripts -- 用于存放所有NASL脚本(后缀名为.nasl)
/scripts/desc -- 用于存放所有NASL脚本多语言描述(后缀名为.desc)
注:xscan_gui.exe与xscan.exe共用所有插件及数据文件,但二者之间没有任何依赖关系,均可独立运行。
四. 准备工作:
X-Scan是完全免费软件,无需注册,无需安装(解压缩即可运行),需要WinPCap驱动程序支持(WinPCap 2.3以上版本)。
五. 注意事项:
1.未安装WinPCap驱动虽然可以正常使用X-Scan,但一些需要定制数据包的检测功能将完全失效。
2.端口扫描中的SYN方式和被动主机操作系统识别功能在NT4系统下无法使用,在windows 2000等系统下使用时必须拥有管理员权限。
3.在"X-Scan"中内置的密码字典仅为简单示范,使用者如果希望软件有更强的密码猜解能力,应该自己编辑密码字典文件。
4.命令行方式检测过程中,按"[空格]"键可以查看各线程状态及扫描进度,按"q"键保存当前数据后提前退出程序,按""强行关闭程序。
5."X-Scan"所使用的地址查询数据库为"追捕"软件的数据库,并且得到作者许可。在此对"追捕"软件作者及所有为建立此数据库作出贡献的朋友表示感谢。由于没有考虑和将来"追捕"数据库的兼容问题,不能保证能正确使用以后版本的"追捕"数据库。在"追捕"数据库文件格式没有改变的情况下,可以将新版本的数据库文件"wry.dll"拷贝到/dat目录下替换旧版本文件,但建议在覆盖前备份旧文件.
六. 命令行方式运行参数说明:
1.命令格式: xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项]
xscan -file <主机列表文件名> <检测项目> [其他选项]
其中<检测项目> 含义如下:
-active : 检测目标主机是否存活
-port : 检测常用服务的端口状态(可通过\dat\config.ini文件的"PORT-SCAN-OPTIONS\PORT-LIST"项定制待检测端口列表);
-sql : 检测SQL-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-ftp : 检测FTP弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-ntpass : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-smtp : 检测SMTP-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-pop3 : 检测POP3-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-smb : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件);
-cgi : 检测CGI漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案);
-iis : 检测IIS编码/解码漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案);
-nasl : 加载Nessus攻击脚本;
-all : 检测以上所有项目;
[其他选项] 含义如下:
-v: 显示详细扫描进度
-p: 跳过没有响应的主机
-o: 跳过没有检测到开放端口的主机
-t <并发线程数量[,并发主机数量]>: 指定最大并发线程数量和并发主机数量, 默认数量为100,10
* cgi及iis参数中"编码方案"含义:
1.用"HEAD"替换"GET"
2.用"POST"替换"GET"
3.用"GET / HTTP/1.0\r\nHeader:" 替换 "GET"
4.用"GET /[filename]?param=" 替换 "GET"(可通过\dat\config.ini文件的"CGI-ENCODE\encode4_index_file"项设置[filename])
5.用"GET " 替换 "GET"
6.多个"/"或"\"
7."/"与"\"互换
8.用"替换"<空格>"
注:各变形方案若不冲突则可以同时使用,如"-cgi 1,6,8"表示同时使用第1、6、8号方案对HTTP请求进行变形。
2.示例:
xscan -host xxx.xxx.1.1-xxx.xxx.255.255 -all -active -p
含义:检测xxx.xxx.1.1-xxx.xxx.255.255网段内主机的所有漏洞,跳过无响应的主机;
xscan -host xxx.xxx.1.1-xxx.xxx.255.255 -port -smb -t 150 -o
含义:检测xxx.xxx.1.1-xxx.xxx.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机;
xscan -file host.lst -port -cgi -t 200,5 -v -o
含义:检测"host.lst"文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机;
七. 插件接口:
/* 该函数在初始化插件时被调用,用于获取插件基本信息。
返回值含义:TRUE--插件初始化成功;FALSE--插件初始化失败。*/
extern "C" __declspec(dllexport) BOOL __stdcall GetPluginInfo(PLUGIN_INFO *);
/* 该函数在检测主机时被调用,传入主机基本信息及必要参数,返回扫描结果。
返回值含义:TRUE--存在漏洞;FALSE--不存在漏洞。*/
extern "C" __declspec(dllexport) BOOL __stdcall PluginFunc(VOID *);
插件应导出上述两个函数,xscan.exe将分别在初始化和扫描时调用。编译后将最终生成的.dll程序重命名为.xpn文件,并保存在xscan.exe所在目录的"plugin"子目录内。示例插件程序见“/plugins/XScan_Pub_Plugin_{by_Enfis}.rar”。
1