图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部分内容如下图所示。
图2-4-2 密码字典的部分内容
wpd.dat实际上是一个xml文件,里面包含mysql,mssql,Telnet,wmi,ssh,rdp的密码字典以及不同的入侵方式执行的shell。此外,wpd.dat中存在一个名为ports的键,当该键的某个子健键值为1时,ServerAgent模块将配置scanner模块使其扫描该子键对应的端口。
图2-4-3 ports键概览
在默认的wpd.dat中,只有mssql子键的值设为1,因此scanner模块只扫描mssql服务对应的端口(端口号1433)。黑客可以通过配置wpd.dat文件增加、减少、修改扫描端口的数目和类别。
图2-4-4 从抓包数据发现Bot程序只扫描1433端口
有趣的是,ServerAgent模块选择随机的ip段作为每一轮扫描的ip范围,这和mirai僵尸网络的做法十分相似。如下所示,get_random_ip函数生成的随机ip段为220.176.171.93~220.182.171.87,因此本轮扫描中scanner模块对该ip段进行扫描。