msf stagers开发不完全指北(一)

采用c开发stagers...

六月 23, 2020 · 3 分钟 · 

metasploit payload运行原理浅析(sockedi调用约定是什么)

本篇文章主要讨论一下msf官方文档中提到的sockedi调用约定到底是指什么? ...

五月 9, 2020 · 11 分钟 · 

msf的rpc和json-rpc,我该选择哪个?

msf的rpc有两种调用方式,那么我们应该调用哪一个呢? ...

五月 7, 2020 · 5 分钟 · 

如何用Golang写msf插件模块

最近有空在看msf,发现msf里面有模块的源码是golang的,去翻了翻wiki,wiki上面的编写日期是2018.12.13,搜了下国内,好像没有这方面的文章,那就自己跟着做做记个笔记 ...

二月 14, 2020 · 5 分钟 · 

Python内存加载shellcode

生成 首先生成一个测试的msf shellcode 1 msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使用 原理 大部分脚本语言加载 shellcode 其实都是通过 c 的 ffi 去调用操作系统的api,其实并没有太多的技巧在里面,明白了原理,只需要查一下对应的脚本语言怎么调用 c 即可。 那么我们只需要明白 c 通常是怎么加载 shellcode 的即可一通百通。 那么 c 是怎么加载 shellcode 呢,我们直接从汇编开始探究。 shellcode 这个东西我们明白是一串可执行的二进制(一般可执行文件的拥有可执行权限的section为.text),那么我们先通过其他的手段开辟一片拥有可读可写可执行权限的区域放入我们的 shellcode,然后跳转到 shellcode 首地址去执行就行了,汇编里面改变eip(即当前指令的下一条即将运行指令的虚拟地址)的方法有不少,最简单的就是直接 jmp 过去了。也就是写成伪码大概意思就是(动态申请内存就不写了) 1 2 lea eax, shellcode; jmp eax; 那么我们用 c 怎么表示呢?我这里也写一段伪码(因为本文的重点并不是在于 c 代码的编写) 那么按照刚才的思路,先申请一块可执行的内存,放入 shellcode 然后跳转过去执行即可。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // shellcode unsigned char shellcode[] = "\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9" "\x64\x8b\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08" "\x8b\x7e\x20\x8b\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1" ...; // 定义一个函数类型 typedef void (__stdcall *CODE) (); // 申请内存 PVOID p = NULL; p = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // 把shellcode放入内存 memcpy(p, shellcode, sizeof(shellcode)); CODE code =(CODE)p; code(); 我并没有写出一个可用的 c 加载 shellcode,只是旨在点出一下流程,然后引出后面的 python 加载 shellcode,上面我们先申请了一块带有可读可写可执行权限的内存,然后把 shellcode 放进去,然后我们强转为一个函数类型指针,最后调用这个函数,达到了我们的目的。 ...

十一月 13, 2019 · 2 分钟 ·