前言

  一个用于从SideWinder APT组织常用的hat文件中解密C2链接地址的Python脚本,示例代码对一些老的hat文件效果比较好,新的样本可能需要根据实际情况修改下,最初是用于对VT上命中的大量样本进行批量提取C2地址用的

示例代码

# -*- coding: utf-8

import base64
import re
import sys def myXor(key, data):
out = ""
i = 0
datalen = len(data)
while i < datalen:
for j in range(len(key)):
tmp = ord(data[i]) ^ ord(key[j])
out += chr(tmp)
i += 1
if i >= len(data):
break
return out def myBase64Decode(key, string):
#某些情况下会出问题:“asEqf170rcEU” -> “|abx|oeq” -> 正确结果应该是“|abx|oeq|”
result = []
string = string.strip("=")
binstr = ""
bin6list = []
bin8list = []
#key = "JXaYOjSNTet1dDrHsVlc0m5EknG7Ko6qibhFBuyzQUwxWCp4ZLf23gAvMR8PI9+/" for ch in string:
bin6list.append("{:>06}".format(str(bin(key.index(ch)).replace("0b", "")))) binstr = "".join(bin6list) for i in range(0, len(binstr), 8):
bin8list.append(binstr[i:i + 8]) for item in range(len(bin8list) - 1):
result.append(chr(int(bin8list[item], 2)))
return "".join(result) def myBase64Decode2(key, string):
STANDARD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
CUSTOM_ALPHABET = key
ENCODE_TRANS = str.maketrans(STANDARD_ALPHABET, CUSTOM_ALPHABET)
DECODE_TRANS = str.maketrans(CUSTOM_ALPHABET, STANDARD_ALPHABET)
return base64.b64decode(string.translate(DECODE_TRANS)) def myGetb64(data):
b64 = re.search("var b64 = \"(.+)\";", data).group(1)
return b64 def myGetkeeeeKey(data):
keeee = re.search("var keeee = .+?\(\"(.+)\",", data).group(1)
return keeee def myGetkeeeeData(data):
keeee = re.search("var keeee = .+\((.+)\)\);", data).group(1)
keeee = keeee.replace("\"+\"", "")
keeee = keeee.replace("\"", "")
return keeee def myGetkeeee(data):
key = myGetkeeeeKey(data)
str = myGetkeeeeData(data)
keeee = bytes.decode(myBase64Decode2(b64, str))
return myXor(key, keeee) def myGetaUrl(data):
url = re.search("var aUrl = .+?\((.+)\)\+x;", data).group(1)
url = url.replace("\"+\"", "")
url = url.replace("\"", "")
return url def myDecodeUrl(keeee, data):
return myXor(keeee, data) if __name__ == '__main__': if 1 >= len(sys.argv):
print("输入文件路径参数后重试")
exit(1)
try:
f = open(sys.argv[1], 'r')
data = f.read()
f.close() b64 = myGetb64(data).replace("=", "")
keeee = myGetkeeee(data)
encodeUrl = myGetaUrl(data) strurl = bytes.decode(myBase64Decode2(b64, encodeUrl))
url = myDecodeUrl(keeee, strurl)
print(url)
except:
print("文件不支持或其它错误:(")

感兴趣的小伙伴可以根据样本自己修改下

3e14d22a63775a59878a71d80ea17bfd
4dc475b2055b5a880cbd67526b0f6e3c
94ae178768482ead9b0c0612325a9eeb
354a7e51b5ae982ce24b588c12f34ae1
884e404b0d8b34e98f90809909171e90
1333fb41972e81a99ada7e2df5ba014f
69737cb11c6596298a5bf1958f5d1ad3
484214759657cc28daa61de086d526f2
ca90bf0bc5771caf82f991641b316562
f158bffa5f876619aa745e23a2800c9d

【APT】响尾蛇(SideWinder)Hta文件自动解密C2的更多相关文章

  1. 文件自动备份和同步bypy和syncthing

    http://blog.csdn.net/pipisorry/article/details/52464402 Linux定时备份数据到百度云盘 sudo pip3 install requestss ...

  2. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  3. CocoaPods 导入第三方库头文件自动补齐

    使用了一段时间CocoaPods来管理Objective-c的类库,方便了不少.但是有一个小问题,当我在xcode输入import关键字的时候,没有自动联想补齐代码的功能,需要手工敲全了文件名,难以适 ...

  4. Code笔记之:对使用zend加密后的php文件进行解密

    对使用zend加密后的php文件进行解密 使用zend加密后的php文件用notpad++打开会出现类似的乱码 下面使用解密工具进行解密 http://pan.baidu.com/s/1i3n4ysX ...

  5. linux环境下给文件加密/解密的方法

      原文地址:linix环境下给文件加密/解密的方法 作者:oracunix 一. 利用 vim/vi 加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了:缺点:很明显让别人知 ...

  6. 为js和css文件自动添加版本号

    web应用必然要面对缓存问题,无论前台后台都会涉足缓存.特别是对于前端而言,缓存利用的是否得当直接关系到应用的性能. 通常情况下,我们会倾向于使用缓存,因为缓存一方面可以减少网络开销,一方面可以减轻服 ...

  7. ◆linux分区的加密与自动解密◆——Super孟再创辉煌

    首先制作分区的加密挂载: 分区的自动解密:

  8. gulp下livereload和webserver实现本地服务器下文件自动刷新

    一.前言 node从v0.10.26升级(为了匹配autoprefixer)到v5.3.0后出现了gulp插件兼容问题,在nodejs下各种新的插件出现问题,需要重新配置.livereload实现ch ...

  9. CVS 文件自动移 tag 的 Python 脚本

    CVS 文件自动移 tag 的 Python 脚本 背景 工作中使用的版本管理工具是 CVS,在两次发布中,如果修改的文件比较少,会选择用移 Tag 的方式来生成一个新 Tag 发布.文件比较少的情况 ...

  10. CocoaPods导入第三方库头文件自动补齐

    使用了一段时间CocoaPods来管理Objective-c的类库,方便了不少.但是有一个小问题,当我在xcode输入import关键字的时候,没有自动联想补齐代码的功能,需要手工敲全了文件名,难以适 ...

随机推荐

  1. webssh

    目录 使用 jupyter notebook 使用webssh GateOne 使用 jupyter notebook pip install jupyter ipyton # 启动 jupyter ...

  2. python图片转base64、base64转图片

    #图片转base64 import base64 with open("./1.png","rb") as f:#转为二进制格式 base64_data = b ...

  3. 关于github的自动化检测

    github 中的 Some checks were not successful什么意思呢?   在 GitHub 上,当您向存储库提交拉取请求时,如果存在自动化的检查(例如CI/CD)或在 pul ...

  4. uniapp记录

    1.uniapp获取imei imsi 型号 厂商 https://blog.csdn.net/qq_35620498/article/details/112172115

  5. 1 wine-stable + 2 brew install mono

    一. 通过wine官网找到安装方法 1  brew tap homebrew/cask-versions2  brew install --cask --no-quarantine (selected ...

  6. 基于CentOS搭建FTP文件服务实战

    参考教程来自腾讯云开发者实验室:https://cloud.tencent.com/developer/labs/lab/10123 话不多少,进入流程 1. 安装vsftpd 使用 yum 安装 v ...

  7. j2ee目录索引

    j2ee  不完全目录 Eclipse中配置约束(DTD,XSD) Eclipse 快捷键 及其 xsd dtd配置本地约束 ===================================== ...

  8. mysql 创建账号并授权

    1.mysql查看所有账号信息 mysql> select user,host from mysql.user; 2.创建账号 mysql> creat user 'glasssix' I ...

  9. MySQL之Web乱码问题

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  10. Lecture 1. Introduction and Basics - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu

    1.Hamming Distance: 两个相同长度比特串对应位置的不同位的数量,一般使用 d(x,y) 来表示汉明距离.对两个比特串进行异或运算,统计结果为1的个数就是汉明距离.   ======= ...