Novter无文件攻击分析报告

发布者:江民科技
发布于:2019-10-28 14:33

1 病毒信息

病毒名称:Trojan.Script.akg

病毒类型:后门

MD5:08ac667c65d36d6542917655571e61c8

SHA1:5b24a3b32d9dba95b296a7a16cbcf50a7df2d196

文件类型:EXE32位

文件大小:84,992 字节

传播途径:无主动传播方式,由上一级下载

影响系统:winxp及以上系统

2 病毒概况

近期,江民赤豹安全实验室捕获到名为“Novter”的后门木马,通过分析发现“Novter”是采用了无文件攻击技术,通过hta文件释放脚本代码主要隐藏在注册表里,并通过后门构成僵尸网络,隐蔽性较强,主要通过广告流量欺诈获利。

“Novter”并不是一款新的病毒,早在今年3月,赤豹安全实验室就通过江民全球病毒样本监测分析平台截获到Novter的样本,其主要受害者分布在美国和欧洲地区, 且仍在向更多地区传播扩散,Novter利用CMSTPLUA COM接口来绕过UAC保护, 通过更改注册表禁止Windows Defender防护软件以及windows自动更新, 创建BITS任务或更改注册表以实现持久化。

3 病毒行为摘要

3.1 文件行为

  以下为正则语法, 除了<>, 表示变量, 另外病毒文件名符合[a-zA-Z0-9]{10}, 且随机, 例如h1Jinr79hv, fHPqbx7WKY等.

创建C:\Documents and Settings\(<username>|All Users)\Application Data\[a-zA-Z0-9]{10}.hta

将%SystemRoot%\notepad.exe拷贝并重命名为C:\Documents and Settings\<username>\Application Data\246765678

3.2 进程行为

  创建名为”Global\CreatorsPatch”的互斥体

  创建名为”76547890876578”的BITS任务

3.3 注册表行为

  创建注册表项(HKLM|HKCU)\Software(\Wow6432Node)?\[a-zA-Z0-9]{10}

  在上述项下创建3个值, 名字均符合[a-zA-Z0-9]{10}形式, 且名字看起来随机.

  在上述项下创建2个值, 名字分别为: 194956, 2177774

  创建注册表值(HKLM|HKCU)\ SOFTWARE\Microsoft\Windows\CurrentVersion\Run 值名[a-zA-Z0-9]{10}, 内容为一个病毒hta文件全路径.

3.4 网络行为

  向C&C地址发送HTTP请求并读取返回数据, 具

体C&C列表见附录(IOCs)

4 详细分析报告

1) 检查自身权限, 根据不同权限选择并设置当前目录为:

C:\Documents and Settings\<username>\Application Data 或

CSIDL_COMMON_APPDATA C:\Documents and Settings\All Users\Application Data

 

后续步骤中提到的当前目录即为此目录

2) 遍历系统进程名, 检测是否有指定进程存在:

 

比对时采用哈希值比较, 哈希算法如下:

 

要寻找的哈希值:

 

若发现存在, 以”p=p”为HTTP请求中可选字段向185.243.114.111发送信息:

 

之后线程永久休眠。

3) 在本进程中查找指定模块名, 检测是否有指定模块, 若发现则报告”p=m”, 线程永久休眠.

 

 

模块名哈希:

 

方式均与步骤2中类似

4) 检测本机是否只有一个处理器, 若是, 则报告”p=c”, 线程永久休眠:

 

 

5) 检测本进程是否被调试, 若是, 则报告”p=d”, 线程永久休眠:

 

6) 检测本进程的线程睡眠是否有效, 若无效, 则报告”p=s”, 线程永久休眠。

 

 

7) 启用”SeTakeOwnershipPrivilege”权限:

 

8) 检测当前权限, 若权限足够, 则禁止windefender以及windows 更新:

 

 

9) 创建线程, 向一个CC列表中的所有地址循环发送心跳包, 总数为1800次, 每次操作完成睡眠一秒:

 

 

CC列表, 其中的accl部分:

 

10) 创建hta文件, 保存到当前目录, 将本程序exe数据和一段内嵌ps脚本, 一段内嵌js命令保存到注册表中, 建立持续机制:

 

 

这个键的会被创建在, 此键后续称为键1:

对于64位系统: (HKLM|HKCU)\Software\Wow6432Node

对于32位系统: (HKLM|HKCU)\Software\

此处的名称为随机名称, 均为10个字符长度, 每个字符可能为数字以及大小写字母. hta,js,ps的内容由于变量名随机故每次生成均不一样, 不过不一样的点也仅限于变量名.

持续机制有两种情况, 在第一种情况失败后会采用第二种情况:

1. 创建名为”76547890876578”的BITS任务, 设定回调命令行执行:

C:\Windows\System32\cmd.exe /c “C:\ProgramData\h1Jinr79hv.hta” & exit 1

 

2. 根据权限在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run或HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下创建:

 

 重启后,由持续机制命令,执行hta文件:

 

如上图所示, hta文件最终读取并执行(js Eval)保存在注册表中的js代码:

 

保存在注册表中的js代码会执行一段ps代码:

 

此ps代码的功能为, 读取并执行保存在注册表中的ps代码:

 

 

而保存在注册表中的ps代码的功能为, 将保存在注册表中的PE文件装载到本进程空间并执行, 至此持续化机制达成.

这个过程, 将混淆后的代码分散保存, 而运行时又能结合在一起, 单独地去看或调试某段代码, 就会有变量缺失的提示.

11) 判断当前进程权限, 若非管理员, 则使用CMSTPLUA COM接口过UAC得到管理员权限:

 

12) 创建线程, 每6小时更新cc地址列表:

 

从步骤9中, “acll”部分的cc地址, 获取数据:

 

解析数据, 将配置数据保存到键一, 名为194956:

 

故accl主要用于cc控制, acll主要用于下发配置.

13) 收集本机信息, 并发送信息到”accl”类服务器:

 

收集的信息包括,系统信息, cpu,gpu信息, 反病毒产品信息, 内存信息, 本进程权限信息等等:

 

 

 

14) 在步骤13发送信息后,可能会收到后门指令,如

 

包含自身清理, 功能暂停/恢复, 下载额外模块并执行, 设定步骤13~14的循环间隔等.睡眠一段时间,默认为90分钟,之后跳转到13步骤进入下一轮活动.

此后门没有在本机打开任何端口,主要靠自身发送HTTP请求,而连接的目标端口全是80或443端口,故隐蔽性较高。

5 总结

  该样本的持久机制使用BITS后台任务, 比较有特点且隐蔽, 另外后门的网络通讯均通过感染端主动发起HTTP请求方式, 也比较隐蔽, 能穿透内网。

值得注意的是, 若普通地启动此程序, 会导致本程序崩溃以及部分功能不表达,原因有两点:

i. 在sub_4014c6中, 作者为了消除内存中的hta,js,ps等文件数据, 使用memset, 对照常来说处于全局不可写数据段的数据进行清零:

 

从这里可以看出, 此程序作者应该是确定此程序的数据段均可写, 这个程序有自己的加载方式。

ii. 在调用COM接口之前, 本程序中并没有任何一处位置调用CoInitialize或CoInitializeEx等函数, 也就会造成BITS接口调用失败. 显然, 根据本程序的水平, 作者不会犯这种错误, 那么此程序被装载进入的进程必定已经初始化。

6 附录(IOCs)

6.1 HASH

  a82dd93585094aeba4363c5aeedd1a85ef72c60a03738b25d452a5d895313875

6.2 C&C

  185.243.114.111

{

"accl": ["http://95.70.244.209:80/", "https://13.228.224.121:443/", "http://54.241.31.99:80/", "https://103.31.4.11:443/", "http://103.31.4.54:80/", "https://198.41.128.74:443/", "http://198.41.128.55:80/", "https://131.0.72.36:443/", "http://131.0.72.59:80/", "https://188.114.96.87:443/", "http://188.114.96.116:80/", "https://43.250.192.98:443/", "http://43.250.192.87:80/", "https://217.160.231.125:443/", "http://208.91.197.25:80/", "https://184.168.221.42:443/", "http://103.224.248.219:80/", "https://31.31.196.120:443/", "http://217.160.223.93:80/", "https://103.224.248.219:443/", "http://184.168.221.45:80/", "https://119.28.87.235:443/", "http://23.227.38.32:80/", "https://50.63.202.39:443/", "http://216.239.34.21:80/", "https://83.243.58.172:443/", "http://5.9.41.178:80/", "https://88.198.26.25:443/", "http://62.75.189.110:80/", "https://109.239.101.62:443/", "http://107.186.67.4:80/", "https://184.168.221.63:443/", "http://45.55.154.177:80/", "https://104.28.2.169:443/", "http://202.56.240.5:80/", "https://89.163.255.171:443/", "http://94.23.149.42:80/", "https://216.230.250.157:443/", "http://45.199.82.121:80/", "https://59.45.30.31:443/", "http://88.180.45.155:80/", "https://118.244.233.215:443/", "http://93.158.208.54:80/", "https://198.54.115.200:443/", "http://104.27.166.154:80/", "https://72.52.179.174:443/", "http://192.64.117.82:80/", "https://184.168.131.241:443/", "http://162.159.208.24:80/", "https://162.159.211.43:443/", "http://43.250.188.148:80/", "https://180.97.158.168:443/", "http://39.106.211.3:80/", "https://114.215.147.176:443/", "http://121.42.27.82:80/", "https://104.206.30.104:443/", "http://182.92.10.105:80/", "https://142.111.192.173:443/", "http://107.179.127.9:80/", "https://154.82.66.116:443/", "http://23.80.172.4:80/", "https://104.203.174.8:443/", "http://162.159.211.36:80/", "https://154.90.118.219:443/", "http://121.41.7.197:80/", "https://182.50.129.67:443/", "http://138.68.20.141:80/", "https://212.67.221.148:443/", "http://45.192.35.108:80/", "https://45.199.44.27:443/", "http://170.178.171.30:80/", "https://60.191.249.41:443/", "http://104.27.154.139:80/", "https://58.177.211.62:443/", "http://122.152.198.216:80/", "https://95.216.235.93:443/", "http://59.149.207.62:80/", "https://103.193.149.210:443/", "http://124.248.238.238:80/", "https://173.231.22.201:443/", "http://124.248.238.238:80/", "https://202.160.153.229:443/", "http://103.28.45.182:80/", "https://125.65.113.89:443/", "http://104.216.99.237:80/", "https://204.11.56.48:443/", "http://37.48.66.73:80/", "https://121.43.159.95:443/", "http://170.106.74.143:80/", "https://218.5.79.45:443/", "http://61.191.55.96:80/", "https://23.107.65.82:443/", "http://121.40.82.109:80/", "https://121.40.39.164:443/", "http://107.151.228.56:80/", "https://117.27.136.53:443/", "http://211.149.174.17:80/", "https://198.255.0.138:443/", "http://89.163.255.171:80/", "https://45.77.99.198:443/", "http://185.195.27.234:80/", "https://89.163.255.171:443/", "http://46.105.62.98:80/", "https://121.40.128.87:443/", "http://178.33.249.44:80/", "https://23.225.123.173:443/", "http://89.163.255.171:80/", "https://23.107.141.103:443/", "http://198.54.117.200:80/", "https://28.15.32.1:443/", "http://89.163.255.171:80/", "https://89.163.255.171:443/", "http://23.225.123.173:80/", "https://89.163.255.171:443/", "http://198.54.117.200:80/", "https://176.9.24.233:443/", "http://54.38.115.133:80/", "https://199.59.242.150:443/", "http://107.151.161.154:80/", "https://61.93.205.106:443/", "http://61.196.178.246:80/", "https://61.196.178.248:443/", "http://61.238.122.149:80/", "https://61.244.8.97:443/", "http://89.163.255.171:80/", "https://89.163.255.171:443/", "http://118.89.159.251:80/", "https://23.27.38.248:443/", "http://118.190.206.114:80/", "https://103.200.116.116:443/", "http://202.181.26.176:80/", "https://141.8.225.31:443/", "http://199.59.242.151:80/"],

"acll": ["37.252.8.85:443", "37.252.10.66:443", "37.1.221.156:443", "5.61.42.103:443"],

"version": 1.0

}



声明:该文观点仅代表作者本人,转载请注明来自看雪