訪问原文

(一)模块组成

感染过Sinowal的电脑,Sinaowal在硬盘中的分布例如以下图:
; Sector                 Offset                 Size                          Name
; ----------------------------------------------------------------------------------------------------------------------
; 0                         0000h             512             Bootloader
; 60                       7800h             512             Ntldr Hook Code
; 61                       7A00h             512             Kernel Code
; 62                       7C00h             512             Original Bootloader
(二)Bootloader 分析
(a)  Bootloader 的主要功能。
首先将sinowal的其它部分读入内存。然后Hook int 13h ,最后将原始的BootLoader 载如内存 0x7c00处。运行原始代码。
内存映像为:
| 0x9f400 - 0x9f600   |  0x9f600 -0x9f800  | 0x9f800 -0x9fa00 |
; ----------------------------------------------------------------------------------------------------------------------
|Bootloader               |  Ntldr Hook Code    | NtosHookCode   |
(b)int 13hook 函数的运行逻辑
在读入的数据流中搜索特征码 8B F0 85 F6 74 21 80 3D 这段特征码相应的代码例如以下:
.text:00422A6A      call    _BlLoadBootDrivers@12 ;
.text:00422A6F      mov    esi, eax                    。8bf0
.text:00422A71      test     esi, esi                  ;85f6
.text:00422A73      jz      short loc_422A96           ;7421
.text:00422A75      cmp    _BlRebootSystem, 0          ;80 3D F8 AE 43 00 00

定位到特征码后,进行第一次Hook  将8B F0 85 F6 74 21 的6个字节替换为ff 15 fc f5 09 00 即 call  dword  ptr  [0x9f5fc], Hook后的代码例如以下:
.text:00422A6A       call    _BlLoadBootDrivers@12
.text:00422A6F       call     dword  ptr  [0x9f5fc]        。注:[0x9f5fc]保存的地址是 0x9f600,为Ntldr Hook Code
.text:00422A75       cmp    _BlRebootSystem, 0;

(三)Ntldr Hook Code 分析
(a) 保存现场环境
mov esi,eax
test eax,eax
pushf
jnz Hook_Handler
add [esp+4],dword 21h
Hook_Handler:
pushad
mov edi,[esp+24h]
and  edi,0FFF00000h

*** *** ***
(b)搜索全局变量 BlLoaderBlock
将函数函数的返回地址按4kb对齐,然后在Ntldr代码区搜索特征码 C7 46 34 00 40 ,该特征码相应的代码为:
.text:00415914                 mov     dword  ptr [esi+34h], 4000h     。 C7 46 34 00 40
.text:0041591B                 mov     word  ptr [esi+38h], 1          ; 66 C7 46 38 01 00
.text:00415921                 mov     eax,   _BlLoaderBlock           ;  A1 C4 82 46 00     注 :C4 82 46 00 为地址部分

由此可定位到 BlLoaderBlock,其类型为PLOADER_PARAMETER_BLOCK,。在BlLoadBootDrivers调用以后,全部Boot型的驱动都会被                                  增加到内存中,相关信息,如地址,名称,大小等都会保存到链表 BlLoadBootDrivers中。
(c)定位系统初始化时IoInitSystem的调用点
依据上一步骤获取到的BlLoadBootDrivers可定位到NtosKernel的ImageBase 和SizeOfImage。然后搜获特征码6A 4B 6A 19 E8 * * * * E8 * * * *
此处相应的代码为:
INIT:005ACEC9          push    4Bh                                         ;6a 4b
INIT:005ACECB          push    19h                       。6a 19
INIT:005ACECD          call    _InbvSetProgressBarSubset@8  ; E8 **
INIT:005ACED2          push    dword ptr [ebp-470h]
INIT:005ACED8          call    _IoInitSystem@4             ; E8 **

由此可搜索到IoInitSystem  将IoInitSystem地址 和 Ntoskenel 基址保存在 0x9f800 + 4 和 0x9f800 + 0xc处
将0x9f800 —0x9fa00处共512字节的代码挪至Ntoskenel 尾部(0x8068)
将 call  _IoInitSystem@4 替换成 call 0x8068 完毕对NtOskernel的hook
(四)Kernel Code  Hook
依据之前保存的Ntoskenel 基址,搜索到ExAllocatePool 申请一片内存(分页内存池和非分页内存池都已初始化完成)。将代码挪个窝
然后调用 原始IoInitSystem。调用完毕后,windows运行体函数大多能够使用了。
可搜索ZwCreateKey,ZwClose创建“Registry\Machine\System\BootKit”

转载于:https://www.cnblogs.com/jzssuanfa/p/7131577.html

Sinowal Bootkit 分析-中国红客网络技术联盟 - Powered by Discuz!相关推荐

  1. 中国红客网络技术联盟(H.U.C)重组完成重新开站

    中国最大.最早成立.世界排名第五的黑客组织中国红客网络技术联盟(H.U.C)(旧称"中国红客联盟" )已 由站长lion于2006年10月份左右重新开站.原班人马担任核心成员, 此 ...

  2. 【软件测试笔试题】阿里巴巴(中国)网络技术有限公司

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  3. 什么是5G承载网?【转载自微信公众号网络技术联盟站】

    5G承载网是为5G无线接入网和核心网提供网络连接的基础网络. 为了满足5G应用场景的需求,5G承载网采用新的网络架构和关键技术,为5G网络提供超大带宽.超低时延.灵活智能的连接服务. 5G对承载网提出 ...

  4. 红帽Linux系统操作命令大全【linux查询命令篇】---转自微信公众号网络技术联盟站

    1. 查看硬件信息 uname -a 查看内核/操作系统/CPU信息 head -n 1 /etc/issue 查看操作系统版本 cat /proc/cpuinfo 查看CPU信息 hostname ...

  5. 中国宽带网络技术加速普及

    "十三五"规划实施电力战略,扩大网络空间做部署,提出加快建设高速,移动,安全,新一代信息技术基础设施. 2016年,工业部及相关部门继续实施"宽带中国"特别行动 ...

  6. 【网络技术联盟站】网络工程师深入篇之网络基础知识

    一. 以太网基础: 1. 常见传输介质: (1)同轴电缆(有线电视): (2)双绞线(局域网网线): (3)光纤(广域网网线): 右图中为光纤接口类型: ① ST ② FC ③ SC ④ LC (4) ...

  7. 生成树协议实验报告_【网络技术联盟站】从原理到实验再到优化剖析STP生成树协议...

    STP技术背景 STP基本概念 1. 简单地说STP采用四个步骤来解决二层环路问题: 2. 关键字段及比较原则 STP操作 1. 在交换网络中选举一个根桥 2. 在每个非根桥上选举一个根端口 3. 为 ...

  8. 【网络技术联盟站】从原理到实验再到优化剖析STP生成树协议

    STP技术背景 STP基本概念 1. 简单地说STP采用四个步骤来解决二层环路问题: 2. 关键字段及比较原则 STP操作 1. 在交换网络中选举一个根桥 2. 在每个非根桥上选举一个根端口 3. 为 ...

  9. [精华] 思科、华为、H3C命令对照表【网络技术联盟站】

    最近又太多的朋友想要思科.华为.h3c的命令了,本文是三大厂商命令的对照表. 各个厂商的详细命令可以点击以下链接: 下面将列出思科.华为.h3c命令的对照表,命令顺序也是思科.华为.h3c哦!!!!! ...

最新文章

  1. c++链表形参丢失_LeetCode 例题精讲 | 01 反转链表:如何轻松重构链表
  2. C++求从1到n的正整数中1出现的次数
  3. 关于解决oracle登录:ora-12154:tns:无法解析指定的连接标识符
  4. 2016php技术面试题,一个php的面试题,大家看看
  5. Python与机器视觉(x)图像修复
  6. 一文读懂babel编译流程,再也不怕面试官的刁难了
  7. 戴尔服务器安装群晖系统安装教程,实战群晖NAS小白安装教程与经验分享
  8. java简历模板 知乎,简历模板太多不知选哪种?让面试官眼前一亮的简历!
  9. 功能不错的Snagit截图软件
  10. Debian 10 安装fonts-noto-cjk
  11. go语言 flag用法
  12. Nginx 配置根据表示进行PC与移动的跳转
  13. Oracle 工具篇+Oracle Remote Diagnostic Agent(RDA)
  14. 梦熊杯-十二月月赛-白银组题解-D.智慧
  15. 记录一下我在lubuntu里面用到的工具
  16. 2013年5月中国数码相机市场分析报告
  17. oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段
  18. Activiti的学习
  19. EasyUI的插入一行到某行和添加一行
  20. 3D打印制造技术 原理

热门文章

  1. bzoj1861[Zjoi2006]Book 书架
  2. nagios整合ganglia实现hadoop、Hbase监控及手机短信报警
  3. Android SQLite简单操作示例
  4. 解决centos6.4 启动dell omsa 失败
  5. Android本地应用程序应用方式介绍
  6. 在进行了解JAVA CLASS文件解析时必须要明白的三个概念
  7. Ubuntu Make新版上线:支持安装Swift编程语言
  8. SQLite 指南之FAQ(中文)
  9. 蓝桥杯 ADV-72 算法提高 一元一次方程
  10. 【C++】判断两个vector是否相等~直接用“==”呀~