Category Archives: malware

UNVEIL: 一种大规模检测勒索软件的自动化方法

尽管勒索软件早已不是什么新奇的概念(这种攻击甚至可以追溯到20世纪80年代), 但这种类型的恶意软件最近开始复苏变得流行起来. 事实上, 近几年以来已经报道了数起备受瞩目的勒索软件攻击, 例如对索尼的大规模攻击导致了索尼不得不推迟发布电影<>. 勒索软件通常会锁定受害者桌面, 使用户无法访问系统, 或是加密, 覆写, 删除用户文件, 以此来勒索钱财. 然而, 虽然现今已经提出了许多通用的恶意软件检测系统, 但没有一个检测系统有尝试专门解决勒索软件的检测问题. 在本论文中, 我们提出了一种名为UNVEIL的新型动态分析系统, 专门用于检测勒索软件. 而分析的关键依据就是, 勒索软件要想成功实行攻击, 就必定会去篡改用户的文件或桌面. UNVEIL会生成一个伪造的用户环境, 并检测勒索软件与用户数据的交互时间, 同时还会跟踪系统桌面上发生的可能是由勒索软件行为造成的变化. 我们的评估结果显示, UNVEIL 显著地提高了现有技术水平, 并能够检测出以往反病毒公司未能检测出的在野勒索软件.

Posted in malware, papers | Leave a comment

编写YARA规则检测恶意软件

简介 我们都知道, 黑掉漏洞百出的代码比修补代码有趣得多. 但只会入侵的黑客并不一定能满足雇主的需求. 一些公司就希望安全研究人员能够基于他们收集和发现的恶意软件样本或泄露数据进行补丁. 本文适合人群: 新手和爱好者 阅读本文需要的知识 其实并不需要太多知识要求, 当你对恶意软件分析和逆向工程理解越深, 你就越有独特的方式捕获恶意软件. 不过这并不妨碍你写出惊人的yara规则出来. 我所见过的大部分规则都相当基础. 大部分看上去就像5分钟就能写好的python脚本. 编写规则, yara规则本身十分简单, 真正的技巧和细节都在分析部分 . 熟悉GNU Linux 熟悉C语言语法(不作要求, 但十分有用) 正则表达式 (同上, 不作要求, 但很有用)

Posted in malware | Leave a comment

Intro to malware “TSCookie”

2018年1月17日左右, 社交媒体上开始出现一些关于恶意邮件的报道, 这些邮件声称来自日本的教育部, 文化部, 体育部和科技部. 这些邮件里包含有指向恶意软件”TSCookie”的URL链接(趋势科技将其称为为PLEAD恶意软件, 因为PLEAD取自趋势科技过往捕获到的一次APT攻击活动, 故本文中我们将该恶意软件命名为”TSCookie”). TSCookie在2015年在野外被发现, 并且怀疑黑客组织”BlackTech”与此次攻击活动有关. JPCERT/CC证实称, 使用恶意软件的敌对团伙已经对日本组织进行了针对性的攻击. 本文将介绍我们在分析TSCookie后的成果. TSCookie概述 下图描述了TSCookie的执行流程: TSCookie本身只是用作一个下载器, 通过从C&C服务器下载模块来扩展功能. 我们所检查的样本下载了一个具有传出信息和其他功能的DLL文件(以下简称”TSCookieRAT”). 下载的模块仅在内存上运行 TSCookie和TSCookieRAT的行为将在下面的章节中详细解释.

Posted in malware | Leave a comment

wsnpoem unpack part two

本文已发表在看雪论坛, 详情可见: https://bbs.pediy.com/thread-223401.htm 承接之前写的zbot变种木马wsnpoem脱壳笔记 part 1,我们这次用另外一种方式来脱壳。并且本文还将分析另外两个恶意样本。 文中分析的程序你可以点击此处下载: wsnpoem恶意样本par2.zip, 解压密码: www.pediy.com OD重载wsnpoem-with-rootkit.exe,依然是之前的顺序,在leave处设下硬件断点后运行,让第1阶段的解密完成。然后删除设下的硬件断点,向下翻看。 不过这次我们就不会在00409EDA处的jmp eax下断了,我们再向下翻到00409F26处的mov eax, 004051B7,这句汇编代码下面是call eax,也就是说程序将要执行OEP处的代码。 我们在004051B7设下硬件执行断点,然后执行断下,程序停在了OEP处,我们删除硬件断点 那么我们接下来的步骤就跟之前一样,运行步过004051D2处的call 0040aad4导入函数表,然后将EIP重设为004051B7。 之前用Ollydump+ImportREC我们手动cut chunks来修复导入表,这样不仅枯燥费力,而且还有可能误删正确的chunks导致修复失败,这次我们使用额外一个工具 – Universial Import Fixer 1.0[Final],也就是UIF。这个工具可以为我们自动修复导入表,我们只需要将wsnpoem的进程id输入进去就可以。 在重设完EIP后,我们打开UIF,然后再通过在cmd里用tasklist命令查询到wsnpoem的pid,我的是1816,将其转为16进制,也就是0x718,填入到UIF的Process ID中,取消掉默认勾选的Fix NtDll to Kernel32,然后点击Start UIF就会帮你自动修复导入表并显示修复后的信息。这些信息我们等下用ImportREC是需要使用的,也就是下图的IAT RVA和IAT Size 既然修复好了导入表,那么我们就可以用Ollydump将程序转储出来,记得在dump时要取消勾选rebuild imports,转储文件保存为dump.exe 打开ImortREC,然后选择wsnpoem进程,输入OEP,并按照UIF修复给出的IAT RVA和IAT Size填入到ImportREC中 你可以看到导入表直接就是可用的,我们不需要手动修复导入表。我们就可以直接转储到文件就行了。IDA打开当然也是脱壳完成并且各导入函数清晰的。 … Continue reading

Posted in malware, unpack | Leave a comment

wsnpoem unpack part one

本文已发表在看雪论坛, 详情可见: https://bbs.pediy.com/thread-223393.htm wsnpoem恶意程序是zbot木马家族的变种,经过加壳保护,我们接下来就来脱壳。 文中分析的程序你可以点击此处下载: wsnpoem恶意样本par1.zip, 解压密码: www.pediy.com OD载入wsnpoem-with-rootkit.exe 这是wsnpoem解密的第一阶段,我们直接在00409D41的LEAVE处右键设下硬件执行断点,然后运行 然后我们选择菜单Debug->Hardware Breakpoint移除刚才设下的断点,向下翻到00409EDA处 我们在这行设下软件断点(F2)然后运行,停在断点处,我们取消掉这行的断点,按下Enter进入到跳转的分支去,向下翻到00412449处 在翻过了第2层解密后,00412449处所指向的004051B7便是我们的OEP,同样设下一个软件断点(F2),然后运行,停在断点处,我们取消掉这行的断点,然后步入OEP 然后向下一点,看到0040523A处,在数据窗口中转向0040FD34 可以看见,这里的这个call所调用的函数地址处是全零,这会造成程序的崩溃,因此我们可以推测在call以上的代码中有填充这个空间 我们现在边步过,边观察数据窗口中的0040FD34,看什么时候向该处填充了数据,可以很容易发现,在步过004051D2处的Call 0040AAD4后,数据窗口中填充了许多的数据 那这样看来,004051D2处的Call 0040AAD4就是将所有的函数都导入到内存空间中,而我们的0040FD34则是导入表的一部分,因此我们可以右键重新将EIP设到OEP处。 向上翻看导入表空间,貌似可能的函数地址块,也就是我们的导入表头,是从0040FB3C开始 我们也可以在ascii块中右键选择Long->Address,这样数据窗口会以地址格式进行显示,方便我们查看导入表 同样,我们向下翻看,查找导入表的结尾是在0040FEB8 这样,找到了OEP,也有导入表信息,那么我们就可以用Ollydump+ImportREC来进行脱壳,如下,点击dump保存为dump.exe 打开ImportREC,选择正在运行的wsnpoem-with-rootkit.exe,然后在OEP、RVA和SIZE处填写好我们获得的信息,然后点击Get Imports 但显然,我们的导入表函数虽然有找到,但都是无效的。所以我们需要手动修复导入表函数,因为可能在导入表内混有一些垃圾地址,所以我们需要手动进行移除,比如第一个chunk中 点击对应的shell32.dll右键显示反汇编,可以看到如下代码,显然不是一个正常的函数的代码,因此可以确定是垃圾地址。我们右键cut chunks 然后有的块显示反汇编提示read error,那么其实也是垃圾地址。依照类似的方法将所有的垃圾地址清除干净后,你就可以转储到文件,然后用IDA打开,你会发现壳已经脱干净并且导入函数也很清晰

Posted in malware, unpack | Leave a comment