提示:为了阻止恶意代码破坏系统,恶意代码已经被配置向一个硬编码的回环地址发送信令,但是可以认为其是一个硬编码的外部地址
LoadString:这个成员函数是在调用String Table里面定义的信息,也就是说,把String Table中的字符串读出来到对象里
CreateEvent:产生事件对象,如果调用成功,返回的是新生成的对象句柄,否则是NULL
CreatePipe:创建匿名管道,第一个参数是hReadPipe,返回对管道读的句柄,第二个参数是hWritePipe,返回对管道写的句柄,第三个参数是lpPipeAttributes,是一个指向SECURITY_ATTRIBUTES结构体的指针
然后是一系列对于多线程的操作跳过
关注一下结尾的401880:
GetModuleFileName:获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载
GetShortPathName:获取指定路径的短路径形式
最关键是下面这一行:
看一下这个结构体的定义:
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize;//结构大小,sizeof(SHELLEXECUTEINFO)
ULONG fMask;//指定结构成员的有效性
HWND hwnd;//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
LPCTSTR lpVerb;//指定该函数的执行动作
LPCTSTR lpFile;//操作对象路径
LPCTSTR lpParameters;//执行参数,可以为 ULL
LPCTSTR lpDirectory;//工作目录,可以为 NULL
int nShow;//显示方式
HINSTANCE hInstApp;//如果设置了 SEE_MASK_NOCLOSEPROCESS ,并且调用成功则该值大于32,调用失败者被设置错误值
LPVOID lpIDList;//ITEMIDLIST结构的地址,存储成员的特别标识符,当fMask不包括SEE_MASK_IDLIST或SEE_MASK_INVOKEIDLIST时该项被忽略
LPCTSTR lpClass;//指明文件类别的名字或GUID,当fMask不包括SEE_MASK_CLASSNAME时该项被忽略
HKEY hkeyClass;//获得已在系统注册的文件类型的Handle,当fMask不包括SEE_MASK_HOTKEY时该项被忽略
DWORD dwHotKey;//程序的热键关联,低位存储虚拟关键码(Key Code),高位存储修改标志位(HOTKEYF_),当fmask不包括SEE_MASK_HOTKEY时该项被忽略
union {
HANDLE hIcon;//取得对应文件类型的图标的Handle,当fMask不包括SEE_MASK_ICON时该项被忽略
HANDLE hMonitor;//将文档显示在显示器上的Handle,当fMask不包括SEE_MASK_HMONITOR时该项被忽略
} DUMMYUNIONNAME;
HANDLE hProcess;//指向新启动的程序的句柄。若fMask不设为SEE_MASK_NOCLOSEPROCESS则该项值为NULL。
//但若程序没有启动,即使fMask设为SEE_MASK_NOCLOSEPROCESS,该值也仍为NULL。
//如果没有新创建进程,也会为空
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
然后分析其他函数:
401000是一个变形BASE64
4015C0像是主控手函数:
这个循环像是遍历功能列表,401800
只要不是exit,就执行这个操作
然而,并不能回答一个问题
说明需要配置一个动态调试的环境辅助分析
问题1:恶意代码编写时直接使用IP地址的好处和坏处是什么?
攻击者可能会发现静态IP地址比域名更难管理。使用DNS允许攻击者将他的系统部署到任意一台计算机上。仅仅改变DNS地址就可以重定向其僵尸主机。对于这两种类型的基础设施,防御者有不同的选项来部署防御系统。但是由于同样的原因,IP地址比域名更难处理。这个事实会让攻击者选择静态IP地址,而不是域名。
问题2:网络库?
啊
问题3:URL信息源?
啊
问题4:HTTP协议?
啊
问题5:初始信令中传输的是哪种信息?
啊
问题6:通信信道设计的缺点
啊
问题7:编码方案是否标准
啊
问题8:通信如何终止
啊
问题9:代码目的
啊
啊
啊
啊
啊
啊
啊
啊
啊
啊
啊
https://www.cnblogs.com/hyq20135317/p/5515675.html