传说中,每个月黑风高夜,都是入侵搞事时。
01
事件溯源
网站管理员小A又轮到今天值晚班,网站运行得好好的,各项数据指标正常,看来又是一夜无事。为了打发时间,他拿出手机开始“吃鸡”。
在被花式秀了好多次,尝试了包括被车轧死、队友发疯打死、毒死、误伤炸死、被徒手打死等等稀奇古怪的死法之后,小A放弃了“吃一把鸡”就不玩了的想法。眼下只有明暗不定的显示器陪着他,就连枯燥的进程都比游戏有意思。
看起来很正常。
嗯?再看一眼……
很...正常?
这个tomcat进程下启动的是个什么鬼?!
赶紧去tomcat目录下瞅瞅
喵喵喵?
这四个.war的包都是病毒?
小A顿时来了斗志,大半夜的终于找到了一件比苟到最后吃鸡更有意思的事情。
他迅速调出日志进行分析,由于这四个包的修改时间有两个时间点,分别是2018-01-29与2018-02-06,因此他特别仔细地查看tomcat日志的这两个时间点,均发现了入侵痕迹,且均通过tomcat弱口令进入tomcat管理部署webshell。
到底谁设了一个这么简单的口令!!!
根据日志行为来看,小A推测入侵主机的黑客有两拨,第一拨2018-01-29入侵虽然成功,但未做过多危害性动作;而第二次入侵后则上传了病毒下载器,接着运行下载器下载病毒最后释放病毒控制服务器。
1月29日的日志
2月6日的日志
到这里,小A已经搞明白发生什么事儿了。
02
病毒分析
再回到最初的起点……对不起走错片场了,让我们回到最开始的地方,tomcat的进程树。
下面的几个异常进程无疑都是病毒搞的鬼,小A决定把病毒本身也分析一波。经过初步判断,小A得到了关于这个病毒的这些基本信息。
OD载入,往下翻一翻就看到了GetModuleHandleA函数,0042F4CF为WinMain函数,之前都是初始化。
进入到WinMain后,发现其只在0042E339处调用了一个函数,传入参数为字符串“PluginMe”及其指针。
跟进去42E339处调用的0042E2CB函数。
Python解密伪代码如下:
解密后发现该块内存是PE文件的映射。
函数返回后看下一个函数,继续传入了内存pe映射的起始地址,应该会是相关操作
跟进去分析,发现是Library显示加载kernel。dll获取其函数HeapAlloc、VirtualAlloc、GetProcessHeap,再校验了401080处内存是否为DOS头的magic(MZ)和NT头的signature(PE),最后调用VirtualAlloc申请内存空间
RtlAllocateHeap别名为AllocHeap,返回值为一个指向所分配内存块的首地址的指针,即eax=0x163A40,其余剩下代码均是申请内存以及将pe映射复制到0x10000000内存地址块以及加载库函数(篇幅有限,这里就略去不表了)。
获取系统目录后,调用10023ED0函数,参数为
和
0x100268D4(值为0)
读取完病毒文件最后0x400字节放入地址0x393FE0后,”KLMN”,0x,0x400,0x10002224,393FE0调用10013A00,函数在读取的文件最后0x400个字节中寻找字符串”KLMN”,没找到就退出。
在偏移量为0x358处找到了字符串KLMN,并返回其偏移量,之后加上malloc到的0x400的内存地址基址0x393FE0,暂且称之为跳转控制内存块。
跳转控制内存块解密伪代码如下:
接着搜索OPQR,得到字符OPQRI,然后判断U是否在OPQRI中。不在,则判断I是否在OPQRI中;在,则在跳转控制内存块中搜索得到
EFGHk3J1dGdmL4hram1sf36BL6OChU8=
”Defghi Klmnopqr Tuv”
接着搜索GHIJ得到
GHIJk3J1dGdmL4hram1sf36BL6OChYR3dm5xL5NydXRP
解密得到字符串
Defghi Klmnopqr Tuvwxyab Defg
接着搜索IJKL,得到字符串
IJKLk3J1dGdmaWgvim1sf36BgIOCL6R3dm5xcHMvlXRnZmloa2ovjH9+Tw==
解密得到字符串
Defghijk Mnopqrstu Wxyabcd Fghijklm Opq
在其内部调用了1000E320函数搜索字符串“EFGH”得到密文解密为
Defghi Klmnopqr Tuv
接着判断通过注册表判断服务HKLM\SYSTEM\CurrentControlSet\Services\Defghi Klmnopqr Tuv是否存在。
然后再openSCManagerA打开服务控制管理器,未成功打开则退出,安装服务,更改服务为SERVICE_KERNEL_DRIVER驱动模式;
若不成功则使用
SERVICE_FILE_SYSTEM_DRIVER文件
系统驱动模式,打开服务,创建进程cmd.exe >nul 然后退出。
若是服务进程走到此处时则
StartServiceCtrlDispatch
启动服务入口点函数10014B9E,主线程死循环。
经过RegisterServiceCtrlHandler分发处理函数后,DNS请求硬编码地址,连接tcp远控服务器。
连接上黑客远控服务器进行通信,基本上就可以为所欲为了,来,成语接龙,为所欲为!
其他还有一些条件跳转区域:如复制到共享盘、添加到菜单启动栏等
根据分析的结果,小A最后给病毒画了一张流程图
03
善后处理
正经的分析溯源结束了,天也快亮了。小A揉了揉有点酸涩的眼睛,看了一下时间,再过一个小时他就可以交班了。
在交班前,他还有一些事情要做,比如把病毒清理掉
清理进程
关闭病毒服务(Defghi Klmnopqr Tuv)所运行的进程
清理注册表
随机种子
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed
感染机器标签
HKLM\System\CurrentControlSet\Services\BITS\KLMNb1c78b6da61914d53f8325069260be59
病毒服务注册表项
HKLM\System\CurrentControlSet\Services\Defghi Klmnopqr Tuv\
或者
HKLM\System\CurrentControlSet001\Services\Defghi Klmnopqr Tuv\
文件清理
删除C:\Windows\目录下2016/08/17时间生成的病毒(注意确定为病毒再删除),文件名为随机字母
服务清理
清理服务Defghi Klmnopqr Tuv
事情的起因竟然只是Tomcat使用了弱口令,并且还给了Administrator的权限。小A随手重新换了一个复杂无比的密码,并且降低了Tomcat的权限。他暗自决定,如果找出谁起的弱口令,就宰他一星期的晚饭!
当然小A不知道的是,如果装一个服务器安全狗,这些都是能直接删除的!
*本文由安全狗旗下的海青安全研究实验室原创,转载请联系授权
领取专属 10元无门槛券
私享最新 技术干货