+-------------------------------------------------------------------------+ | Sality.ag 基本结构 | | 20120630 /by nEINEI | +-------------------------------------------------------------------------+ HASH:8d93b0fb68063f4137161d63295b7945a358d7c9e82e1805b2b71805606994ea 1. 感染条件:A.有效PE文件 B .Section数量少于0xF个 C. 无TLS D.重定位(根据参数) E. Section的PointerToLinenumbers和NumberOfLinenumbers为0 2. 感染方式: 1. 扩大最后一节: 条件:A. 最后一节可读写 B. 最后一节节名称为:TEXT UPX CODE 2. 增节感染: 条件:扩节感染失败 3. 病毒代码分布方式: 1. 扩大最后一节: A: 源程序EP处n个字节(n大小有多态引擎计算,最大为0x1F4字节) B: 最后一节-0x11000+n(n为小于10000按原文件对齐后的值) 2. 增加节: A: 源程序EP处n个字节(n大小有多态引擎计算,最大为0x1F4字节) B: 原程序最后一节,大小0x11000+n(n为小于10000按原文件对齐后的值) B:病毒主体代码 +0x0 (Decrypt_sub2) 解密位置() +0x1000 | | +0xZ (Decrypt_sub) | | | 长度小于250 解密方式 xor 立即数 解密位置 +0x0 解密长度<756 | +0x1116 (Virus_Function,代码固定) +0xD OEP相对于0x0处的距离(用于跳转) +0x17D4 ThreadFunction +0x2489 (lpopenfile) +0x248D (OEP) +0x2491 (createfilew) +0x2495 (createfileA) +0x2499 (getprocessaddress) +0x249D (openfile) +0x24A1 被感染文件原始长度 +0x24A5 增加的代码在文件中的偏移 +0x24A9 原文件附加数据大小 | | |备份数据(好像有错误) | +0x2888 (感染成功标志 1 ) +0x288A (常数:1或 sizeof(EP_data)^0x6A14C390) +0x288E (被替换的EP处原始代码) | | 最大(0x1F4) | 大小sizeof(EP_data)^0x6A14C390 | +0x2A82 | | 0xC个0 | +0x2A8E | | |大小0x1770 | +0x 41FE 5. 检测方法: 1. 扩节检测: NumberOfLinenumbers==0x14 && 最后一节属性读写执行 2. 增节检测 NumberOfLinenumbers==0x14 && 最后一节节名(.(源文件路径倒数第五个字符)第二节节名称)