一起由tomcat弱口令导致的入侵事件

传说中,每个月黑风高夜,都是入侵搞事时。

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不知道的是,如果装一个服务器安全狗,这些都是能直接删除的!

*本文由安全狗旗下的海青安全研究实验室原创,转载请联系授权

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180530B1QMIA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券