文章作者:孟方明[-273℃@EST](无敌最寂寞[E.S.T]) 信息来源:《黑客x档案》
序 如果我现在问大家一个问题,入侵成功后我们该干什么?相信大家都会异口同声地回答:“装后门!”不错,为了保住胜利果实,我们总会四处寻找适合的后门。我们的要求并不过分——体积小、功能强大、隐蔽性强。然而前两个要求还是比较容易实现的,最让后门作者头疼也让使用者无奈的就是隐蔽性了。这次我给大家带来的就是另类的方法打造自己的隐蔽后门。
前置小知识 在继续本前我们需要先了解点必要的知识.在WIN32下使用的文件格式都是PE文件格式。PE文件是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件内容被分割成不同的区块(section,又称区段、节等),块中包含代码或数据,各个块按页边界来对齐,块没有大小限制,是一个连续的结构。 每一个区块都有不同的名字,这个名字用来表示区块的功能。磁盘文件中每个区块的大小必定等于磁盘对齐值的整数倍,而区块的实际代码或数据的大小不一定刚好这么多,所以在不足的地方一般以0x00来填充,这就是区块的间隙。而对我们这篇文章来说,这就是关键。我们就是在这块间隙上做文章,这块间隙我们称做“dead space”。 另外一个我们需要注意的问题就是在汇编中我们可以直接这样来调用一个函数: push 0 push "hello" push "hello" push 0 call user32.MessageBoxA
但是在机器码中我们不能直接push一个字符串,我们只能push这个字符串所在的地址。比如: 01007D80 . 68 65 6C 6C 6F>ASCII "hello",0 01007D86 00 DB 00 01007D87 00 DB 00 01007D88 00 DB 00 01007D89 00 DB 00 01007D8A 00 DB 00 01007D8B 00 DB 00 01007D8C 00 DB 00 01007D8D 00 DB 00 01007D8E 00 DB 00 01007D8F 00 DB 00 01007D90 6A 00 PUSH 0 01007D92 68 807D0001 PUSH notepad.01007D80 ;注意这里,我们push的是hello字符串所在的地址 01007D97 68 807D0001 PUSH notepad.01007D80 01007D9C 6A 00 PUSH 0 01007D9E E8 D3E6D276 CALL USER32.MessageBoxA
好了,需要提前了解的地方就这些,下面我们该进入正题了。 打造实战 先简单说一下我们的思路,寻找一个系统自带的文件,然后使用反汇编调试工具在其“dead space”中添加我们的后门代码,然后对目标文件进行必要的修改,使之运行的同时也运行我们的后门代码。下面我们以一个简单的实例为大家演示。目标文件我们定为系统自带的记事本上,为什么选择它呢?因为很多情况下大家会打开txt文档,而txt文档默认的关联程序正是记事本。 OK!下面准备好我们的主角 OllyDebug 1.10b 汉化版。选择“文件”→“打开”找到c:\windows\system32\notepad.exe(我使用的是xp系统,其它系统大同小异,下面所有过程均以xp为平台讲述),打开后如图一。

大家注意到我用红框框起的那个地址吗?它被反黑显示,把它记住,这个就是程序的入口点。拖动代码窗口的滚动条,直到找到如图二所示的一长串“00”的地方,这个就是我前面提到过的“dead space”,我们将在这里添加我们自己的代码。

1 2 3 4 5 6 下一页 |