xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
添加工具English Version

cmdbind2及其原码.zip


提交时间:2004-02-15
提交用户:Marsbeta
工具分类:后门程序
运行平台:Windows
工具大小:75193 Bytes
文件MD5 :b521621cd0f6b477b1e61fbe1c3a8754

一般来说一个后门程序需要更改系统的某些文件来让程序在系统启动执行这个程序,又要在某个地方保留这个程序(一般是在硬盘)。如果有什么办法不这样做又让程序在系统中运行的话,就可以使后门程序更加隐蔽。也就是说程序在硬盘上找不到在系统的启动配置中没有这有项。真正要做到这样好象不太现实,但可以采用简单的方法:在程序被执行后删除程序文件和启动文件中被更改的部分,然后在系统被关闭前保留程序文
件和更改启动文件,让它在系统启动时又能被执行。
     程序是一个可执行文件在被执行时系统会把它保护起来,如果要删除它需要更改系统!很麻烦!可以把代码放到其他程序中作为另外进程的线程来运行既利用创建远程线程函数。系统被关闭一般有三种情况:正常关机,掉电(不正常关机),一键关机(按下power).对于正常关机,程序会收到CTRL_SHUTDOWN_EVENT的信号,一键关机,可以简单的使用钩子但掉电(不正常关机)老农实在想不出办法。好在一般的nt服务器很少这种情况。          
     在nt系统下用CreateService来注册一个服务,当然是在系统SHUTDOWN前。在启动时用DeleteService删除这个服务,保存一个程序文件在虚拟内存中,删除在硬盘上程序文件.
     老农用这个方法写了个后门程序,建立远程线程把cmd.exe绑在2000端口,在原程序中有些注解有兴趣的朋友可以看看。相关的原程序和编译好的可执行文件可在我的主页下载。

     直接把代码插入其他进程中,这样的编程效率很低。大部分时间用在确定虚拟内存地址上。其实可以利用动态连接库让系统为程序确定地址,就是编写一个dll文件把全部的功能
放在dll中,用rundll32来运行dll中的函数。某些程序能够查看到系统加载的dll文件,我们又要把这个dll文件从硬盘上删除,只要用FreeLibrary释放掉dll就能够做到。编写的代码又必须继续在进程中作为线程在执行。这里使用一点技巧就可以做到,把dll文件拷贝一个不同文件名的副本,在进程中加载这个副本这样系统就会在进程中分配虚拟内存以影射这个副本,用GetProcAddress取得想要执行的函数地址,把整个分配的虚拟内存保存在另外的地方,然后用FreeLibrary释放掉副本dll。申请和加载副本地址相同的虚拟内存,把它拷贝回去。用CreateThread执行申请虚拟内存中的函数(就是GetProcAddress取得的地址)。再释放掉dll。这样这个dll文件就被加载到进程中,使它作为个线程被执行,又可以删除dll文件,由于
FreeLibrary释放掉dll所以看不到这个dll被加载。编程时可以象编写普通的应用程序一样不必考虑虚拟内存地址,因为系统已经为我们做了。我也写了个例子,sdll.zip在SPOOLSV.EXE进程中建立WH_JOURNALRECORD钩子当按下"a"键时喇叭就会响一下。
    使用时把dll文件拷贝到system32目录下用"rundll32 sdll.dll ondll"来运行这个dll原程序中有注解。


如果有什么错误,问题,建议可以和作者联系:
nongmin.cn@yeah.net

>> 下载 <<