大家好,今天给大家分享一款专业的 Windows 恶意程序分析与清理工具OpenArk,它能够帮助用户发现系统中隐藏的恶意软件。

OpenArk是一款Windows平台上的开源Ark工具. Ark是Anti-Rootkit(对抗恶意程序)的简写, OpenArk目标成为逆向工程师、编程人员的工具,同时也能为那些希望清理恶意软件的用户服务。以后也将会支持更多功能和命令。

项目介绍

OpenArk允许用户查看和操作进程、线程、模块、句柄、内存、窗口等,并包含了进程注入等高级功能。此外,它还提供了内核级别的工具来检查和操作内存管理、驱动程序、热键、回调、过滤驱动等,以对抗和分析潜在的恶意软件行为。

特色功能

1. 进程

支持查看进程、线程、模块、句柄、内存、窗口、Token、内存扫描、PPL等信息,还有模块卸载、进程注入等功能。

  • 创建进程Dump

使用OpenArk,选定进程,右键创建Dump,可选Fulldump或Minidump,一般进程内存使用不多的情况下,Dump都选Fulldump。

  • 定位进程文件

程列表中选择进程,右键Explore File,或者使用快捷键Ctrl + L,即可定位到进程文件路径。

  • 批量结束进程

批量结束进程跟查找进程参数基本一致,仅多了结束进程动作。

使用命令:

.ps -kill -name <进程名模糊匹配>
.ps -kill -path <进程路径模糊匹配>
.ps -kill -pid <进程ID,逗号分隔>
  • 查看内存信息

查看系统内存使用:

C:\>.mm
PageSize : 4096 B
Memory Usage : 89.11%
-------------------------------------------
CommitTotal : 14.28 GB (14625.38 MB)
CommitLimit : 21.40 GB (21918.15 MB)
CommitPeak : 15.58 GB (15955.36 MB)
-------------------------------------------
PhysicalTotal : 15.95 GB (16337.25 MB)
PhysicalAvailable : 1.74 GB (1778.73 MB)
-------------------------------------------
KernelTotal : 0.94 GB (966.70 MB)
KernelPaged : 0.74 GB (756.39 MB)
KernelNonpaged : 0.21 GB (210.31 MB)
SystemCache : 2.90 GB (2964.89 MB)

查看进程内存使用:

C:\>.mm -pid 488
Working set : 5.48 MB
WS Private : 1.59 MB
Private : 1.91 MB
PeakWorkingSet : 5.55 MB
PageFaultCount : 1875
-------------------------------------------
QuotaPagedPoolUsage : 0.11 MB
QuotaNonPagedPoolUsage : 0.02 MB
QuotaPeakPagedPoolUsage : 0.12 MB
QuotaPeakNonPagedPoolUsage : 0.02 MB
-------------------------------------------
PagefileUsage : 1.91 MB
PeakPagefileUsage : 2.28 MB
  • 查看进程基本信息

进程列表中选定进程,双击或者Ctrl + P查看Properties,如下图所示:

  • 查看进程模块

进程列表中选定进程,模块如下图所示:

  • 查看进程窗口

进程列表双击(或者右键查看Properties),选择WindowList,如下:

  • 查看进程线程

在进程列表双击(或者右键查看Properties),选择Thread,如下:

  • 通过PID选择进程

使用快捷键Ctrl + G,可输入进程ID(10进制或16进制)来定位进程,如下图所示:

2. 内核

系统内核工具,例如:内存管理、驱动、热键、回调、过滤驱动、存储、IDT/SDT/NDIS/WFP等功能。

  • 查看被占用的系统热键

经常会遇到系统热键/快捷键被占用,但是不知道被谁占用。OpenArk现已加入可以枚举和摘除系统热键的功能,支持Win7/Win8/Win8.1/Win2012/Win2016/Win10 (~2004) x86/x64 Win7及以上所有版本)。

注意:如果上面没获取对应的热键,请检查你输入法的快捷键(比如:微软拼音/搜狗/谷歌输入法等),因为输入法的快捷键是单独管理的,不在系统全局热键中。

  • 解锁被占用的文件

经常会遇到文件或文件夹被占用,但是却不知道被谁占用着,故OpenArk加入了类似Unlocker(老一代软件)的文件解锁功能,能够快速地帮用户解决文件占用问题。

由于某些程序的自身实现逻辑,解锁某些文件后,会导致该程序退出;另外有时候结束相关的进程也许不够优雅,但是却是一种比较实用的方式。

3. 编程助手

程序员的工具箱。

  • 时间戳转换

使用命令.ts,查看说明:

C:\>.help .ts
.ts - show unix timestamp
.ts 1234566/0n22222/0x431203BC [show timestamp]
  • 查看文字编码

文字编码种类繁多,常见的是ASCII、UTF-8、UTF-16、GBK、BIG5等。对于汉化人员或者经常遇到乱码的开发人员来说,查看文字编码显得尤为重要。

  • 查看窗口消息ID

查看消息处理过程函数原型,窗口消息ID即是uMsg,通常我们逆向分析跟踪消息处理过程时经常会用到。

查看所有消息ID,可通过.msg命令,.msg使用说明:

C:\>.help .msg
.msg - show window message id
.msg [show message id list]
.msg -name button [show message name matched *button*, eg:WM_LBUTTONDOWN...]
.msg -id 201/0x201/0n513 [implies WM_LBUTTONDOWN]
  • 系统错误值查看

可使用图形化工具,也可使用.err命令

查看.err命令使用说明:

C:\>.help .err
.err - show LastError or NTSTATUS
.err 2 [show LastError]
.err -s c0000034 [show NTSTATUS]
  • 进制转换
值修饰前缀和Windbg保持一致。
二进制:0y    (BIN)
八进制:0t    (OCT)
十进制:0n    (DEC)
十六进制:0x  (HEX)
默认值:针对不同命令可能不一致,如.ps 和 .wnd具体查看对应命令的使用说明

.fmt使用帮助

C:\>.help .fmt
.fmt - show value formats, default radix is 16(hex)
.fmt 0x400/0n1024 [Hex(0x),Dec(0n),Oct(0t),Bin(0y)]
C:\>.fmt 123
HEX: 123
DEC: 291
OCT: 443
BIN: 00000001 00100011
STR: ..

4. 扫描器

PE/ELF文件解析器,以后会变成病毒分析助手。

PE文件是Windows下的可执行程序,与之对应的是Linux下的ELF,macOS下的Mac-O,都是遵从COFF结构标准,两个基本要素是:头Header + 区段(Section),头是属于Meta数据,区段是具体内容。

查看PE文件结构使用方法,如下图所示:

查看基本信息

5. 捆绑器

目录和多个程序可以捆绑成一个exe程序,同时支持脚本。

示例,请查看制作一个捆绑程序

6. 工具库

精心挑选了许多有用的小工具,这些和OpenArk既有功能互补,高效率,我们一直在思考。

7. 语言

目前支持中文和英文,以后会支持更多。

安装使用

  • 程序:独立的exe,无DLL依赖,支持32位、64位。

  • 支持系统:Windows XP … Win7 … Win10 … Win11 …

下载地址,请前往Github发布页

编译安装,请参考编译安装指南

项目地址

https://github.com/BlackINT3/OpenArk