科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道“黑客之门”后门的魅力:感染与加载

“黑客之门”后门的魅力:感染与加载

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

最近对后门产生了很浓厚的兴趣,上网与各位高手讨论的时候,有人提到了“黑客之门”很厉害,也算是推出来的比较成功的一个后门,于是上网下载了一个研究研究,顺便也学习学习其中的方法与技巧。不敢独享,分享于此,同时希望高手们指教。

来源:中国IT实验室 2009年8月21日

关键字: 攻击防范 后门 黑客

  • 评论
  • 分享微博
  • 分享邮件

  最近对后门产生了很浓厚的兴趣,上网与各位高手讨论的时候,有人提到了“黑客之门”很厉害,也算是推出来的比较成功的一个后门,于是上网下载了一个研究研究,顺便也学习学习其中的方法与技巧。不敢独享,分享于此,同时希望高手们指教。

  “黑客之门”介绍

  黑客之门采用的目前一些先进的后门技术,它只有一个Dll文件,通过感染系统文件启动自身,被感染的系统文件大小和日期都不会改变;同时采用线程插入技术,本身没有进程;本身不开端口,而是重用系统进程开的任意一个端口,如80,135,139,445等,因此它的隐藏性非常好,而且穿透防火墙也是很容易的事。这个版本文件不大,只提供一些很有用的命令。目前还没有发现如何工具能查到这个后门,象Fport,Llister,RKDetector等查工具都失效。

  程序的自启动

  既然是一个后门,那么就要随系统的启动而启动,根据黑客之门的介绍,它是通过感染系统程序文件来实现程序的自启动的。既然是感染了系统文件(像病毒),那就看看感染前和感染后的系统文件的区别吧!为了测试感染前后的差别,我准备了一个专门用来被感染的文件TestLoad.exe,它没有什么功能,只是弹出一个对话框,这样好等待测试,麻雀虽小,五脏俱全,省得动系统文件了。接着运行命令:

  C:\>rundll32 hkdoordll,DllRegisterServer TestLoad.exe 2

  使黑客之门感染TestLoad.exe,感染完毕后用EXE文件查看利器eXescope查看TestLoad.exe被感染前后的差别。

  被感染之前eXescpoe显示的TestLoad.exe的结构如图1所示:

  

  图 1

  感染之后的TestLoad.exe的结构如图2所示:

  

  图2

  可以看出感染之后的TestLoad.exe的引入表多了一个Hkdoordll.dll引入库。细心观察感染之后的TestLoad.exe的引入表地址(Import Table Address ITA)已经被改变,原来的ITA为0x000043FC,感染之后为0x0000477E。

  为了进一步看清除感染前后的文件的变化,这里使用LordPE.exe比较感染前后的TestLoad.exe的引入表函数,比较结果如图3所示:

  

  图3

  小提示:使用LordPE.exe查看exe文件的引入表函数方法是:点击PE Edito打开相应的文件,接着点击Directories,弹出对话框后点击Import Table右边的三个点,这样就可以查看一个可执行文件的引入表了。

  可以看出,只是在引入表链表中添加了一个相应的Hkdoordll.dll,这样当被感染的程序再次运行时,由系统的程序装载器搜索Hkdoordll.dll,并将其引用到被感染程序的地址空间,后门就运行起来了。黑客之门的这种子启动方式值得学习,比较灵巧。

  搞明白了黑客之门的启动方式后,我们就可以手动清除它了,这里切不可将Hkdoordll.dll直接删除,这样可能直接导致系统崩溃。因为系统在加载被感染的程序(假如为Services.exe)时发现没有找到Hkdoordll.dll,Services.exe将不能被装载,如果被感染的是系统关键进程的话,那么系统将不能正确的启动。清除的时候我们可以去别的机器上(相同系统与补丁)找一个Services.exe,将被感染的程序命名为Services2.exe,将Services.exe拷贝到System32文件夹下,重启电脑,删除Hkdoordll.dll就清除黑客之门了。

  运行时感染

  上面说的是黑客之门的自启动方式,下面看看黑客之门是怎么感染正在运行的系统文件的,这一点让我晕了很久,最后发现是用了一个很灵活的小技巧。

  我们知道在Windows系统下,正在运行的程序文件一般是不能修改或者删除的,正是由于这一点,才出现了各种程序运行时的自删除大法,程序自删除不是我们这次的重点。但是,细心的用户可能已经发现,在Windows 2000或Wndows XP系统下,我们可以对正在运行的EXE文件进行重命名或者移动。

  再拿刚才的TestLoad.exe做测试,运行:

  C:\>rundll32 hkdoordll,DllRegisterServer TestLoad.exe 2

  可以发现TestLoad.exe所在的文件夹内多出了一个文件TestLoad.exe.bak,咋一看还以为“黑客之门”做好事,自动帮你备份一下系统文件,其实这可是黑客之门的狐狸尾巴啊!是它不得已而为之的。不要关闭TestLoad.exe,然后试着删除TestLoad.exe和TestLoad.exe.bak,是不是发现奇迹了?竟然把TestLoad.exe删掉了,而TestLoad.exe.bak竟然不让删,是不是和我刚才说的话矛盾?非也!非也!刚好证明了刚才的话:黑客之门先把TestLoad.exe改名为TestLoad.exe.bak,然后生成一个被感染的TestLoad.exe,这样,下次运行TestLoad.exe实际上是被替换过的程序,原来的程序则放在一边。

  用IDA Pro反汇编Hkdoordll.dll可以发现以下函数的调用:

  文件重命名:

  .data:1000C618         lea   ecx, [esp+438h+FileName]

  .data:1000C61F         lea   edx, [esp+438h+var_324]

  .data:1000C626         push  ecx

  .data:1000C627         push  edx

  .data:1000C628         call  rename

  拷贝文件:

  .data:1000C66F     lea   edx, [esp+440h+var_32C]

  .data:1000C676     push  0       ; bFailIfExists

  .data:1000C678     lea   eax, [esp+444h+var_228]

  .data:1000C67F     push  edx       ; lpNewFileName

  .data:1000C680     push  eax       ; lpExistingFileName

  .data:1000C681     call  CopyFileA

  移动文件:

  .data:1000C795     mov   eax, [ebp+8]

  .data:1000C798     test  eax, eax

  .data:1000C79A     jnz   short loc_1000C7FE

  .data:1000C79C     lea   ecx, [esp+448h+var_334]

  .data:1000C7A3     push  5       ; dwFlags

  .data:1000C7A5     lea   edx, [esp+44Ch+var_230]

  .data:1000C7AC     push  ecx       ; lpNewFileName

  .data:1000C7AD     push  edx       ; lpExistingFileName

  .data:1000C7AE     call  MoveFileExA

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章