发布于2022年11月8日3年前 目录概述PEID直接运行字符串查看IDA分析导入函数导入额外信息IDA分析开始主函数第一个主要函数 sub_4082F8第二个主要函数 sub_40CFB4文件感染 sub_40A7EC自动运行保活 sub_40C5B0搜索局域网主机 sub_40BD08第三个主要函数 sub_40CED4结束安全软件 sub_40CD30获取网络命令执行 sub_40CE8C关闭共享 sub_40CE94未知的定时器函数附录可执行文件感染前端脚本感染其他的Whboy 是什么win7 x64不发作OD导入Map闪退delphi 函数调用约定 概述 弄到了一个熊猫烧香的样本,Delphi程序,和前面的彩虹猫根本就不是一码事儿,这次只能完全看汇编代码了,不过伪代码可以帮忙分析循环条件什么的。 环境工具: win7 x64 , 火绒剑 IDA OD IDR PEID Delphi的程序 但是以前没有写过也没有逆向过Delphi程序 直接运行 先开着火绒剑,直接运行一下 先设置好虚拟机环境,把文件后缀名,显示隐藏文件也打开,这样就能显示所有东西了 任务管理器被关闭了,再打开的时候已经打不开了 另外,火绒剑也没了... 卧槽,这个不是老病毒了么,怎么火绒剑还会被关闭? 进入C盘,因为设置了隐藏文件可见的原因,看到了这两个文件,从大小来看,初步判断setup.exe就是病毒本身副本,autorun.inf的目的就是为了让开启了自动播放的用户打开磁盘的时候运行setup.exe 稍后桌面出现了一个ini文件 内容是感染日期,不过听说病毒会设置隐藏文件不可见... 但是我怎么能看到呢 于是去看了文件夹设置,发现单选框没有被选择上,设置显示所有隐藏文件 结果桌面一个刷新所有的隐藏文件都看不到了,再进入设置,发现被改回来了 再也改不回来了 看到exe文件图标都变成 熊猫烧香的图标了 虽然不能看到隐藏文件,但是还有办法 通过 dir /a 命令 还是能看到被隐藏起来的 Desktop_.ini 文件 因为火绒剑被关闭了的原因,已经不能知道更多信息了,但是为什么一个老病毒能关闭火绒剑呢?一般不都是黑名单方式检测,然后关闭,这病毒出来的时候火绒剑还没有出现的吧。。。 不过后面想想,这个病毒似乎已经开源了,很多人都写了,所以我手上的样本不一定是原版,有人给他升级了? 字符串查看 因为是Delphi程序的关系,这里需要IDR来查看字符串 这里可以看到很多奇奇怪怪的字符串 有关于文件名的,还有一个cmd命令,是应该打开分享的 注册表路径 还有一些弱口令 以及各种进程名 但是我没有找到火绒啊(/(ㄒoㄒ)/~~) 所以为什么会被干掉 还有文件路径,以及一大堆的乱七八糟的字符,看着像乱码 那么就可以猜测, 他会关闭一些安全软件 修改注册表,实现隐藏自己的目的 通过弱口令对什么东西测试,实际上是局域网分享的密码吧 IDA分析 才注意到 win7 32位不能运行IDA7.0 所以使用了6.8版本 导入函数 导出函数太多了,就找了几个比较有代表性的 00410184 CreateThread kernel32 这里肯定可以创建线程,多线程病毒 00410188 WriteFile kernel32 00410190 SetFilePointer kernel32 00410194 SetEndOfFile kernel32 0041019C ReadFile kernel32 004101A8 GetFileSize kernel32 004101AC GetFileType kernel32 操作文件(这些应该是用来实现文件感染的) 004101FC RegSetValueExA advapi32 00410200 RegOpenKeyExA advapi32 00410204 RegDeleteValueA advapi32 00410208 RegCreateKeyExA advapi32 00410298 CopyFileA kernel32 注册表操作 00410224 WinExec kernel32 执行命令或者创建文件 00410240 GetWindowsDirectoryA kernel32 0041024C GetSystemDirectoryA kernel32 对系统目录会有什么操作 00410218 AdjustTokenPrivileges advapi32 00410214 LookupPrivilegeValueA advapi32 很多病毒都会有的提权操作 00410274 FindNextFileA kernel32 00410278 FindFirstFileA kernel32 文件遍历 004102AC WNetAddConnection2A mpr 004102A8 WNetCancelConnectionA mpr 004102E8 WSACleanup wsock32 00410308 connect wsock32 004102F8 socket wsock32 ······ 00410314 InternetGetConnectedState wininet 00410318 InternetReadFile wininet 0041031C InternetOpenUrlA wininet ······ 网络操作 00410334 DeleteService advapi32 0041032C OpenServiceA advapi32 00410330 OpenSCManagerA advapi32 00410338 ControlService advapi32 ······ 操作服务 00410350 URLDownloadToFileA URLMON 应该会下载什么东西,执行? 00410228 TerminateProcess kernel32 结束进程 004102D8 FindWindowA user32 应该是用来遍历窗口了,但是没有看到其他的函数 由此可以看出,这个病毒功能复杂,也基本可以知道一些大概行为 链接网络之后应该还会有其他操作,不过服务器应该已经关闭了 导入额外信息 之前反编译彩虹猫的时候,按下F5 就能看到伪代码,而且基本上甚至都能运行。 但是这次的Delphi程序,按下F5之后,却是一坨翔:大量的未知函数,还有很多参数明显错误的函数参数。这可让我头疼,所以百度了一下解决方法, 设置符号,告诉IDA这个就是Delphi程序,告诉具体版本(这里我发现设置所有delphi程序版本能识别更多的delphi函数) IDR能更好的识别代码中的函数名称,所以,下载IDR,导出IDC,然后又能识别出一些函数名称 执行IDC之后,整个函数风格都变了,还出现了很多的字符串常量,这就贼棒了 但是 反编译的伪代码依旧是一坨翔,有些能看出是很明显的错误 这就没办法了,只能死磕汇编代码了,所幸我还会些汇编 IDA分析开始 主函数 首先验证了字符串,其实没看懂这步是干嘛的,还对字符串进行了加密(难道是为了避免特征值?) 接着就是三个函数 第一个函数 sub_4082F8 把自己复制到 C:\Windows\System32\drivers\spcolsv.exe (似乎还做了一定的校验) 第二个函数 sub_40CFB4 sub_40A7EC 创建一个线程用来感染文件 sub_40C5B0 是一个定时器,每六秒钟执行一次,功能是保证setup.exe autorun.inf文件的存在 sub_40BD08 会扫描局域网,如果可能,就把远程主机磁盘映射到本地 第三个函数 sub_40CED4 里面有四个定时器,但是最后一个定时器函数没解析出来 定时器一 1s 创建新的线程,遍历窗以及线程,在黑名单中的全部关闭杀死 注册注册表键值,实现隐藏文件,以及自启动 定时器二 1200s 打开http://wangma.9966.org/down.txt 获取文本文件,并执行其中的命令 定时器三 创建了两个线程 10s 线程一 把定时器二的函数又执行了一遍 线程二 执行了 cmd.exe /c net share admin$ /del /y 命令 关闭了分享(为啥会关闭分享呢 不应该打开让人感染吗((・∀・(・∀・(・∀・*))) 第一个主要函数 sub_4082F8 判断当前目录下是否有Desktop_.ini文件,如果有就删除 获取自身文件名,判断是否是副本(也就是位于C:\Windows\System32\drivers\spcolsv.exe) 如果不是副本,那么就复制自己到 C:\Windows\System32\drivers\spcolsv.exe 或者启动方式是被感染文件,则会通过感染时追加到文件末尾的原始文件大小,推算出病毒本体的大小随即从被感染文件中剥离出病毒本体,写入到C:\Windows\System32\drivers\spcolsv.exe,然后执行,之后本线程结束 在剥离病毒本体的过程中,其实有把文件给还原了,只不过释放出了一个bat文件又删除掉了 第二个主要函数 sub_40CFB4 文件感染 sub_40A7EC 获取可用磁盘 类型为 硬盘 移动磁盘 网络驱动器 跳过 分区为A和B的分区 (软盘分区) 开始遍历文件感染 GHO文件 直接删除 EXE、SCR(屏幕保护程序)、COM、PIF文件会感染,感染方式见下文 htm、html、asp、php、jsp、aspx文件则会末尾追加内容,具体内容分析见下文 对于白名单的文件夹跳过,具体白名单见下文 其中,感染过程会被记录在 C:\test.txt文件中,但是我并没有看到这个文件 自动运行保活 sub_40C5B0 每隔六秒执行一次下面的逻辑 搜索局域网主机 sub_40BD08 遍历整个局域网,如果主机可用,尝试映射网络驱动器到本地,如果没有网络就一直等待 第三个主要函数 sub_40CED4 结束安全软件 sub_40CD30 通过函数 sub_406F3C 创建了一个线程,功能如下 遍历所有窗口,获取他们的标题,如果含有以下内容,则发送 WM_QUIT消息试图关闭它 还会通过虚拟按键的方式关闭安全软件 终结以下下进程 编辑注册表键值 实现自启动,以及文件隐藏 Software\Microsoft\Windows\CurrentVersion\Run SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folde 获取网络命令执行 sub_40CE8C 打开 http://wangma.9966.org/down.txt链接,获取一个文本,并执行里面每一行命令 但是因为这个网址已经不能访问了,所以具体不知是什么 根据Wiki百科的内容来看,大概是用来给网站刷流量的 反正居然都能执行命令了,还有啥不能干的 关闭共享 sub_40CE94 创建了两个线程,但是第一个线程只是把上一个定时器的函数执行了一遍而已 关闭共享 执行命令: cmd.exe /c net share admin$ /del /y 未知的定时器函数 这里可能还是一个定时器函数,但是IDA没有解释出来,具体是什么功能暂时不知道 附录 可执行文件感染 经过对比,发现对于一个可执行文件而言,病毒只是把自己插入到可执行文件的前面(覆盖了一部分内容),在文件末尾追加了一个字符串 由此来标记这个文件已经被感染了, 最后跟了一个被感染文件的大小 我以为会添加节区啊啥的... 居然如此暴力, 学到了 啧~ 前端脚本感染 会在 htm、html、asp、php、jsp、aspx 文件后面追加内容,我在C盘根目录下放一个空的html文件骗到内容如下 URL现在指向一个。。。 广告页面? panda VPN? 怕不是病毒作者的新网站? 其他的 Whboy 是什么 “Whboy” 这个字符串多次出现,我一直好奇是什么意思,去了趟wiki百科,找到了含义,就是“武汉男生” 有人通过对此毒脱壳后的特征码分析发现有“whboy”的标识[6],而此标识也曾出现在2004年的一只病毒“武汉男生”上,所以该病毒也被称为“武汉男生”,通过查看李俊的早期作品可以看到他的QQ号码以及他创建的网站信息,有了这些信息,侦破案件的湖北公共信息网络安全监察的工作就容易了许多。 该病毒作者是李俊(1982年-)[7],武汉新洲区人,据他的家人以及朋友介绍,他在初中时英语和数学成绩都很不错,但还是没能考上高中,中专在娲石职业技术学校就读,学习的是水泥工艺专业,毕业后曾上过网络技术职业培训班,他朋友讲他是“自学成才,他的大部分电脑技术都是看书自学的”[8]。2004年李俊到北京、广州的网络安全公司求职,但都因学历低的原因遭拒,于是他开始抱着报复社会以及赚钱的目的编写病毒了。他曾在2003年编写了病毒“武汉男生”,2005年他还编写了病毒QQ尾巴,并对“武汉男生”版本更新成为“武汉男生2005”。 win7 x64不发作 我最开始的虚拟机是 win7 x64 运行之后,主程序直接退出,生成的spcolsv.exe文件也不执行,所以最终我安装了 32位的win7虚拟机 OD导入Map闪退 知道IDR可以导出Map文件 帮助OD识别函数,但是我下载的OD导入Map文件就闪退,换了鱼C的 吾爱的都是一样闪退,删除了所有插件也闪退。。。为啥啊... 不过所幸多看了一眼IDR的菜单栏发现了IDC,结果比IDA识别出来的函数名更人性化一点 delphi 函数调用约定
创建帐户或登录后发表意见