图2-3-3 scanner模块排除部分ip地址后扫描全网
scanner模块能够扫描的端口包括1433端口,3306端口,135端口,22端口,445端口,23端口,80端口和3389端口。
图2-3-4 部分scanner模块扫描的端口
scanner模块可通过两种模式进行端口扫描,分别是TCP_SYN扫描和TCP_CONNECT扫描。使用何种扫描模式由参数“-syn”决定,如果启动参数包含“-syn”则选择使用TCP_SYN模式进行端口扫描,否则选择TCP_CONNECT模式进行端口扫描。当选择TCP_SYN模式进行端口扫描时,Bot程序只发送SYN帧,端口开放回应SYN&ACK帧,端口关闭回应RST帧,;当选择TCP_CONNECT模式进行端口扫描时,Bot程序尝试连接目标端口,端口开放则连接成功,否则连接失败。
Scanner模块创建的最大扫描线程数由“-t”参数决定,“-t”的最大值为1800。在scanner模块创建扫描线程的同时会同时创建名为“CrackerWMI”的线程,但是在Bot程序发送的数据包中并未发现目的端口为135(wmi服务使用的端口)的数据包,推测可能是作者预留的尚未完善的功能。
图2-3-5 两种不同的扫描模式
scanner模块会记录开放特定端口的ip地址,并且与ServerAgent模块和Cracker模块进行交互完成“端口扫描 爆破 入侵”一系列工作。
2. ServerAgent模块分析
ServerAgent模块由两部分功能组成。一是向C&C发送扫描结果;二是对端口扫描和爆破进行相应的配置工作。
ServerAgent模块在scanner模块扫描过程中连接C&C。当scanner模块扫描到开放的端口之后,ServerAgent模块将把对应的ip地址和端口号发送至C&C。
图2-4-1 ServerAgent模块连接C&C
此外,ServerAgent模块下载密码字典并为Cracker模块配置密码字典,当scanner模块扫描到某ip地址的特定端口为开放状态时,将通过该字典进行爆破。字典的下载地址为http://ip:8888/wpd.dat,当下载完成之后,ServerAgent模块将从http://ip:8888/wpdmd5.txt获取正确的密码字典的MD5值并与下载的字典wpd.dat的MD5值进行对比以确定下载文件的正确性。下载的密码字典wpd.dat是经过加密的,ServerAgent模块读取密钥“cm9vdCpwd2Q=”,对密钥进行base64解密后,使用其解密wpt.dat。解密后的wpd.dat部分内容如下图所示。