如果我现在问大家一个问题,入侵成功后我们该干什么?相信大家都会异口同声地回答:"装后门!"不错,为了保住胜利果实,我们总会四处寻找适合的后门。我们的要求并不过分———体积小、功能强大、隐蔽性强。然而前两个要求还是比较容易实现的,最让后门作者头疼也让使用者无奈的就是隐蔽性了。这次我给大家带来的就是另类的方法打造自己的隐蔽后门。
在继续本前我们需要先了解点必要的知识.在WIN32下使用的文件格式都是PE文件格式。PE文件是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件内容被分割成不同的区块(section,又称区段、节等),块中包含代码或数据,各个块按页边界来对齐,块没有大小限制,是一个连续的结构。 但是在机器码中我们不能直接push一个字符串,我们只能push这个字符串所在的地址。比如:
打造实战 先简单说一下我们的思路,寻找一个系统自带的文件,然后使用反汇编调试工具在其"dead space"中添加我们的后门代码,然后对目标文件进行必要的修改,使之运行的同时也运行我们的后门代码。下面我们以一个简单的实例为大家演示。目标文件我们定为系统自带的记事本上,为什么选择它呢?因为很多情况下大家会打开txt文档,而txt文档默认的关联程序正是记事本。 大家注意到我用红框框起的那个地址吗?它被反黑显示,把它记住,这个就是程序的入口点。拖动代码窗口的滚动条,直到找到如图二所示的一长串"00"的地方,这个就是我前面提到过的"dead space",我们将在这里添加我们自己的代码。 [NextPage]
为了直观起见,我们就让程序简单地实现添加一个后门管理帐户的功能。实现此功能我们可以直接编程实现(这样的方法是最好的,也是最隐蔽的),也可以使用系统自带的外部命令来实现比如net命令(这个方法最简单,但是在运行的时候会有个cmd窗口一闪而过,隐蔽性太差),由于我写本篇文章的目的是为了向大家介绍一种方法,所以我们就以最简单的net命令方法来介绍。OK!回到olly上来,找到了"dead pace",我们随便找个地址如01007D76,鼠标左键单击然后向下拉选择一段(这里要注意的是你要选择足够多的空间来保存我们要输入的命令),然后右键菜单选择"二进制"→"编辑"如图三。 我们将在这里编辑我们要执行的命令"net user mfm /add"和 "net localgroup administrators mfm /add"。我们分开来保存这两个命令(当然你完全可以用"&&"把两个命令合成一个),如上图。确定后,出现如图五的情况。 似乎看不懂?没关系我们右键单击其代码然后选择"分析"→"分析代码",或者直接按ctrl+A,如图六。 [NextPage]
哈哈,这才是我们想要的嘛。记住它的起始地址01007D76,然后按照同样的方法添加第二条命令,最终添加的命令如图七。 同样记住第二条命令的起始地址01007D90。
那么我就得先看看notepad.exe是否加载了msvcrt.dll,如果没有加载的话我们还需要添加加载动态连接库的代码.按下olly工具栏的"E"按钮或者直接按alt+E呼出模块可执行模块窗口,如图八. 看样子是加载了,我们可以直接使用system函数了. [NextPage]
然后依次写入如下指令:
下面我要回到程序的入口处,右键单击任意代码处然后选择"前往"→"起源"回到程序入口处.现在我就要修改入口处的代码了,我们将其替换成一个跳转指令,跳到我们的执行代码处,这样就可以执行我们的代码了.我们首先从入口处的代码往后多选几行然后右键选择"复制"→"到剪切板"把这几行代码备份一下(为什么要备份呢?因为我们不知道在修改代码的时候会覆盖掉哪些代码,所以我们就备份一下那几行),然后粘贴到记事本里.如图十一. [NextPage]
OK!我们来修改代码吧,双击入口处的"PUSH 70",出现汇编窗口,然后修改成"JMP 01007DDO"(这个地址熟悉吗?什么?忘了?仔细看看上面),确定后如图十二所示. 在"JMP 01007DD0"代码上直接按回车或者选择右键菜单中的"跟随",看看是不是跳到我们的代码处了?这样当程序运行的话,一进入入口点就会跳转到我们的代码,但是这样看来notepad.exe是不能正常运行了,因为跳转到我们的代码后就不会再去执行notepad.exe的代码了.这不是不打自招吗?那么我们还要继续修改,使它能执行完我们的代码后再继续去执行notepad的代码. 然后回到程序入口处,记住第二个NOP指令的地址(第一个NOP指令也可以,就是不要用那个入口地址,否则就成了个死循环了)01006AE6。然后再回到我们要执行的指令处,在其末尾添加一行"JMP 01006AE6",最终的完成代码如图十四。 [NextPage]
代码我们都写好了,下面我们将修改后的程序dump到一个新的可执行文件里。如下操作:右键任意代码处选择"复制到可执行文件"→"全部修正",如图十五。 在弹出的对话框中选择"全部复制",然后会出现一个新的窗口,关闭这个窗口,会提示你是否保存,选择"是"出现保存文件对话框如图十六,保存后就大功告成了。 运行一下看看,屏幕闪了两次cmd窗口后记事本弹了出来(5555555,不能动态抓图,所以无法给大家展示这瞬间的美丽了~~~)。用net user看后,确实添加了一个管理员帐户mfm。实验成功!
如果你仔细点,会发现修改后的notepad和先前的那个大小依然一样。这是因为我们所添加的那些代码本身就是在notepad自身空间内的。将上面修改后的notepad.exe覆盖肉鸡上的notepad.exe,只要他打开文本文件或者直接运行记事本都会先添加一个mfm帐户了。当然了,我添加的那些代码并不实用,弹出的cmd窗口会非常显眼而引起怀疑。我们可以进一步优化这些代码,甚至添加一个开端口或者反向连接的后门都可以(只要宿主程序"dead space"足够大就可以)。 |
逆向工程打造隐蔽后门
最新推荐文章于 2023-07-13 18:08:07 发布