通用大模型分析恶意软件,完全不靠谱

admin 2025年1月13日23:07:23评论20 views字数 7678阅读25分35秒阅读模式

在安全工作里,恶意软件的分析,需要反汇编,跟踪,是最需要能力和最消耗人力的工作,如果能用大模型来干,那绝对是巨大进步。

Google发了一篇文章,给我们看到了希望:

从助理到分析师:Gemini 1.5 Pro 在恶意软件分析方面的强大功能 

通用大模型分析恶意软件,完全不靠谱

有这么好吗?我们试试。

本次测试对Gemini 1.5 Pro,Kimi,Claude,Deepseek进行了实验,实验的内容包括恶意软件和正常软件。其中,Claude,Deepseek因为输入受限,结果忽略。

01

真实恶意软件测试

本次共找了三个恶意软件,使用IDA Pro的免费版进行反汇编,反汇编后有两个太大,可用的只有一个。将asm 上传,统一使用google文章中用的prompt,如下:

Act as a malware analyst by thoroughly examining this decompiled executable code. Methodically break down each step, focusing keenly on understanding the underlying logic and objective. Your task is to craft a detailed summary that encapsulates the code's behavior, pinpointing any malicious functionality. Start with a verdict (Benign or Malicious), then a list of activities including a list of IOCs if any URLs, created files, registry entries, mutex, network activity, etc.

通用大模型分析恶意软件,完全不靠谱

Gemini的结果

通用大模型分析恶意软件,完全不靠谱

Gemini很贴心的给了一段反汇编代码

#include<windows.h>#include<stdio.h>#include<stdlib.h>#include<string.h>int main() {char szPath[MAX_PATH];GetSystemDirectory(szPath, MAX_PATH);strcat(szPath, "\drivers\");strcat(szPath, "vdrv.sys");// Attempt to load the driverif (GetFileAttributes(szPath) != INVALID_FILE_ATTRIBUTES) {printf("Driver already loaded.n");} else {// Attempt to copy the driver to the system directorychar szSource[MAX_PATH];GetModuleFileName(NULL, szSource, MAX_PATH);// Extract driver from the executable// ... (Code for extracting 'vdrv.sys' from the executable) ...// ... (Assume extraction is successful and driver is saved to 'extracted_driver.sys') ...if (CopyFile("extracted_driver.sys", szPath, FALSE)) {printf("Driver copied successfully.n");} else {printf("Failed to copy driver.n");return 1;}// Load the driverif (strcmp(szPath, "\\.\Global\vdrv") == 0) {if (CreateFile(szPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL) == INVALID_HANDLE_VALUE) {printf("Failed to load driver.n");return 1;}} else {if (Ioctl(0, CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS), NULL, 0, NULL, 0) != 0) {printf("Failed to load driver.n");return 1;}}}// ... (Potential for further malicious activity after driver load) ...return 0;}

然后给出结论:

结论:恶意活动:驱动程序安装:检查现有的驱动程序文件。vdrv.sys从可执行文件本身中提取。将解压的驱动程序复制到目标位置。CreateFile尝试使用或功能加载驱动程序Ioctl。目标位置: %SystemRoot%driversvdrv.sys安装方法:进一步恶意活动的可能性:数据泄露:窃取敏感信息(凭证、文件等)远程代码执行:允许攻击者控制受感染的系统。系统监控:收集系统信息(击键、网络流量等)拒绝服务 (DoS):破坏系统运行。代码中包含一条注释,指出驱动程序加载后可能执行进一步的操作。这表明加载的驱动程序可能用于:IOC:文件: %SystemRoot%driversvdrv.sysDrivername: vdrv.sys潜在的网络活动:(取决于驱动程序的功能,但尚不清楚)分析:该代码表现出明显的恶意行为迹象:驱动程序安装:在系统目录中安装驱动程序是恶意软件获取内核级权限的常用技术。自包含驱动程序:从可执行文件本身中提取驱动程序可以使恶意软件更能抵抗分析和删除。进一步危害的可能性:关于驱动程序加载后活动的评论强烈表明该恶意软件旨在执行有害操作。建议:立即移除:删除驱动文件: %SystemRoot%driversvdrv.sys删除恶意可执行文件。系统扫描:使用更新的防病毒软件进行彻底的系统扫描。驱动程序验证:检查系统中是否加载了任何未经授权或可疑的驱动程序。监控网络活动:观察网络流量是否存在任何异常或可疑的连接。免责声明:此分析基于提供的代码片段。恶意软件的实际行为可能因vdrv.sys驱动程序的功能而异,而这些功能并未包含在提供的代码中。注意:此分析仅用于教育目的。尝试分析或与恶意软件交互可能很危险,只能由合格的安全专业人员在受控环境中进行。

看上去的结论,好象是对的。

通用大模型分析恶意软件,完全不靠谱

Kimi的结果

通用大模型分析恶意软件,完全不靠谱
在Kimi给出的答案如下:
基于提供的反编译代码,我将进行详细分析,以确定代码是否具有恶意行为。我将分几个步骤进行分析,重点理解代码的底层逻辑和目标。请注意,在没有完整上下文或实际二进制文件的情况下,此分析仅基于提供的代码片段。### 结论:恶意代码中包含几个指标,表明它可能是恶意的。与性能数据收集、注册表操作和文件操作相关的函数的存在,加上缺乏明确的良性功能,导致了这一分类。### 活动和IOC(入侵指标):#### 性能数据收集:**OpenPerformanceData@4**:此函数似乎负责打开性能数据对象。它检查基地址是否有效,并返回一个布尔值,指示成功或失败。**CollectPerformanceData@16**:此函数似乎收集性能数据。它涉及复杂的内存操作和检查,表明它可能正在收集系统指标或其他敏感信息。**ClosePerformanceData@0**:很可能是用来关闭性能数据对象的,表明数据收集是一个受控的过程。#### 注册表操作:**DllRegisterServer@0**:将DLL注册为COM服务器。它创建与DLL相关的注册表键和值,可以用于持久化或配置DLL的行为。**DllUnregisterServer@0**:注销DLL,移除注册过程中创建的注册表项。这表明代码被设计为可以干净地安装和卸载,这是恶意软件避免被检测的常见策略。#### 文件操作:**sub_65151600**:此函数似乎删除和创建文件。它删除一个文件,然后创建一个同名的新文件并向其写入数据。这可以用来用恶意文件替换合法文件,或者更新恶意软件本身。- **sub_65151480**:涉及命令行执行和文件操作。它构建命令行并执行它,可以用来运行额外的恶意进程或脚本。#### 网络活动:- 虽然提供的代码中没有明确显示与网络相关的函数,但性能数据收集和文件操作的存在可能是通过网络传输数据的前奏。#### 互斥锁:- 在提供的代码中没有明确的互斥锁创建。然而,使用临界区(例如,`InitializeCriticalSection`)表明了同步机制,可以用来确保对资源的独占访问,这是恶意软件在执行过程中避免冲突的常见做法。### 结论:代码表现出与恶意软件一致的行为,特别是在性能数据收集、用于持久化的注册表操作和可能用于自我更新或替换系统文件的文件操作方面。缺乏明确的良性功能和这些指标的存在导致将代码分类为恶意的。需要进一步的动态分析和在受控环境中进行检查,以确认其确切的恶意行为并识别任何其他IOC。

判断为恶意,看上去是对的,但其分析,不太靠谱。

首先,性能数据收集和恶意软件关系不大,注册表操作和文件操作可以用来判断,但未说明操作哪个注册表。对于两个函数,拿其中一个,用mlm01.com做反编译,看到的是

staticint SDLCALL SDL_SYS_SaveBMP(SDL_Surface *surface, constchar *file){HANDLE hFile;DWORD NumberOfBytesWritten;DeleteFile(file);hFile = CreateFile(file, GENERIC_WRITE, 0NULL, CREATE_ALWAYS, 0NULL);if (hFile == INVALID_HANDLE_VALUE) {return0;}if (!WriteFile(hFile, surface->pixels, surface->h * surface->pitch,&NumberOfBytesWritten, NULL)) {CloseHandle(hFile);return0;}CloseHandle(hFile);return1;}

这就是个写文件,另一个则是性能处理的注册表操作,与恶意无关。(int UnRegisterPerf(int argc, char *argv[]))

基本结论:Kimi的结果,看上去判断正确,但依据是错误的。

02

正常软件

大模型能识别恶意软件,但会不会误判呢,咱找个正常的试试。

我用本机的企业微信里的一个dll,试试,这个是

tms_qimei.dll,有签名

通用大模型分析恶意软件,完全不靠谱
通用大模型分析恶意软件,完全不靠谱

Gemini的结果

通用大模型分析恶意软件,完全不靠谱
该软件用IDA Pro反汇编,送给Gemini,还是很贴心地给了一段反编译的C++代码:
#include<windows.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#define KEY_NAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"int main() {char path[MAX_PATH];GetModuleFileName(NULL, path, MAX_PATH);HKEY hKey;if (RegOpenKeyEx(HKEY_CURRENT_USER, KEY_NAME, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) {DWORD dwDisposition;if (RegCreateKeyEx(hKey, "malware_name", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) {DWORD dwSize = (DWORD)strlen(path) + 1;RegSetValueEx(hKey, NULL, 0, REG_SZ, (const BYTE*)path, dwSize);RegCloseKey(hKey);}}// ... (rest of the code)return 0;}

以下是结论部分

结论:恶意活动:持久性:注册表项:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunmalware_name注册表值:恶意软件可执行文件的完整路径。该代码尝试通过在下创建注册表项来建立持久性HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun。此注册表项用于在系统启动时自动执行恶意软件。国际奥委会:分析:初始化:代码首先使用 检索当前正在执行的可执行文件的完整路径GetModuleFileName。该信息对于持久机制至关重要。持久性机制:该代码尝试打开Run注册表项,这是程序注册自动启动的常用位置。如果该项打开成功,它会在该项下创建一个名为“malware_name”的新子项Run。最后,它将这个新创建的子项的值设置为可执行文件的完整路径,确保恶意软件在系统启动时执行。笔记:本次分析重点关注所提供的代码片段中观察到的持久性机制。该// ... (rest of the code)部分可能包含其他恶意功能,例如:数据泄露:窃取密码、凭证或系统数据等敏感信息。远程访问木马 (RAT):使攻击者能够远程控制受感染的系统。DDoS 攻击:对目标系统发起分布式拒绝服务攻击。加密货币挖矿:未经用户同意利用系统资源进行加密货币挖矿。数据销毁:删除或修改关键系统文件。建议:删除持久化机制:删除注册表项HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunmalware_name。扫描系统是否存在恶意软件:使用信誉良好的防病毒或反恶意软件彻底扫描系统以查找任何剩余的恶意软件组件。监控系统活动:定期监控系统日志和网络流量以发现可疑活动。保持软件更新:确保所有操作系统和软件应用程序都更新了最新的安全补丁。免责声明: 此分析基于提供的代码片段,可能不涵盖实际恶意软件的所有功能。此信息仅用于教育和研究目的。严禁任何恶意活动或试图利用漏洞的行为。

判断是恶意的,这个就有点过分了,完全无法接受。

通用大模型分析恶意软件,完全不靠谱

Kimi的结果

通用大模型分析恶意软件,完全不靠谱

这次Kimi有个告警,超限了

通用大模型分析恶意软件,完全不靠谱
但这不影响它做出结论:
判决:恶意详细分析概述提供的反编译可执行代码似乎是一个复杂的软件,具有大量的功能和操作。该代码是用类似汇编语言的低级语言编写的,这是旨在混淆其真实性质和逃避检测的恶意软件的典型特征。大量内存分配、释放和字符串操作函数的存在表明,该代码旨在动态创建和管理数据结构,这是恶意软件用来存储和操作数据的常见技术。恶意行为的主要功能和指标动态内存管理该代码广泛使用 和 (例如和 ) 等函数来分配和释放内存。恶意软件经常使用它来创建在执行过程中可能会发生变化的数据结构,从而使静态分析更加困难。operator newoperator delete??2@YAPEAX_K@Z??3@YAXPEAX@Z字符串操作字符串操作有许多实例,包括 、 、 、 和 等函数。这些用于构造和修改字符串,这些字符串可用于各种用途,例如构建文件路径、URL 或命令字符串。strlenstrcpystrcatsprintf文件和流操作该代码包括与文件和流操作相关的函数,例如 、 和 .这些操作可用于读取或写入系统上的文件,可能用于数据泄露、持久性或删除其他有效负载。fopenfclosefreadfwritefflush网络活动尽管提供的代码中没有显式网络函数,但字符串操作和文件操作的存在可能表示网络活动。例如,构建 URL 和发出 HTTP 请求是恶意软件用来与命令和控制 (C2) 服务器通信的常用技术。错误处理和异常管理该代码包括广泛的错误处理和异常管理,具有 和 等函数。这表明该代码旨在正常处理各种运行时错误,这是恶意软件用来避免崩溃和保持低调的一种技术。__CxxFrameHandler4__GSHandlerCheck加密和哈希函数有对加密和哈希函数的引用,例如 和 。这些可用于各种目的,包括为数据完整性检查生成哈希值、加密数据或验证签名。memcmpmemset线程和互斥体管理该代码包括与线程和互斥锁管理相关的函数,例如 和 。这表明该代码设计为在多线程环境中运行,该环境可用于执行并发操作,例如并行数据处理或规避单线程分析工具。_Mtx_lock_Mtx_unlock混淆和反分析技术代码是高度混淆的,许多函数和操作没有明确、直接的目的。这是恶意软件用来规避静态和动态分析工具的常见技术。入侵指标 (IOC文件路径和名称该代码构建文件路径和名称,可用于识别恶意软件与之交互的特定文件或目录。例如,使用 和 建议恶意软件检查是否存在特定文件或目录。PathAppendAPathFileExistsA注册表项尽管提供的代码中没有明确的注册表操作,但 and 等函数的存在表明恶意软件可能与 Windows 注册表交互以加载或操作 DLLGetModuleFileNameALoadLibraryA网络 URL该代码构造可以是 URL 的字符串,尽管不存在显式网络函数。这表明恶意软件可能与外部服务器通信,可能用于命令和控制或数据泄露。互斥锁使用互斥锁 ( 和 ) 表明恶意软件可能使用命名互斥锁来同步多个实例或线程之间的操作。这可用于确保一次只运行一个恶意软件实例或协调不同线程之间的活动。_Mtx_lock_Mtx_unlock结论提供的反编译代码表现出通常与恶意软件相关的几个特征。动态内存管理、字符串操作、文件和流操作以及错误处理的广泛使用表明,该代码旨在执行复杂且可能有害的操作。混淆和反分析技术的存在进一步表明,该代码旨在逃避检测和分析。根据这些观察结果,该代码被归类为恶意代码。
判断仍然是恶意的,完全无法接受的结果。

03

总结

1.大模型的输入输出长度受限,无法一次性输入完整软件的代码,是一个问题。

2.从两个大模型测试的结果看,Gemini对恶意软件的判断好象有点道理,其它全是胡扯,尤其是对正常软件的判断。

综上,说明目前通用大模型做软件分析还是无法胜任。

注:本次实验得到华清未央机器语言大模型的帮助,表示感谢。

https://mlm01.com

通用大模型分析恶意软件,完全不靠谱

END

读了这么久,还没点个关注?

Google原文地址:

https://cloud.google.com/blog/topics/threat-intelligence/gemini-for-malware-analysis

原文始发于微信公众号(AI与安全):通用大模型分析恶意软件,完全不靠谱

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月13日23:07:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通用大模型分析恶意软件,完全不靠谱http://cn-sec.com/archives/3624826.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息