前言

  一个用于从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. [转]如何将本地项目上传至Gitee仓库(详细教程)

    码云(Gitee)简单介绍 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放 ...

  2. github 设置代理

    1. 直接修改 .git/config 文件 注意: 仅对当前仓库有效, 推荐这种, 因为不是所有的仓库都需要走代理 [http "https://github.com"] pro ...

  3. winform高dpi问题探索

    ​ winform的高dpi适应问题由来已久,属于一个历史遗留问题.主要是由于winform对不同尺寸.不同分辨率的屏幕适配不足造成的.接下来我们简单说一下如何解决,最后我们探索一下解决此问题的原理. ...

  4. iOS数据持久化 - CoreData

    前言 1 - CoreData 是苹果公司封装的进行数据持久化的框架,首次在 iOS 3.0 版本系统中出现,它允许按照实体-属性-值模型组织数据,并以 XML.二进制文件或者 SQLite 数据文件 ...

  5. Zebra GT800标签打印机打印时脱机并亮红灯的故障处理

    Zebra GT800标签打印机打印时脱机并亮红灯的故障处理 打印测试正常,所有设置都正常,驱动原厂的,打印时只打印一点头,把所有的东西都测试了,花了1天半时间,该摸到的点都测了一般,甚至打算把这款打 ...

  6. RSA 非对称加密

    原文链接:https://www.jianshu.com/p/d56a72013392 RSA 是一种非对称加密算法,在实际业务中经常使用此算法对数据进行加密.但是它的加解密速度较慢,不太适用于高并发 ...

  7. react 基础知识

    基础知识 css-module react 将js转为vdom,react-dom将vdom转为dom // 外面一层是一个动态值,里面的表示的是对象 <img src={logo} style ...

  8. java & spring 注解 备忘

    java deprecated 注解 1 /** 2 * General service for all common business logic. 3 * 4 * @author wanghaip ...

  9. gauva cache

    guava 的cache比较好用.    用户使用的对象是LoadingCache, 通过CacheBuilder来创建,通过 CacheLoader来根据key加载数据.而且可以定时刷新缓存(有访问 ...

  10. sap IUT255 Integration of SAP CRM and SAP IS-U_EN_Col62.pdf

    sap IUT255 Integration of SAP CRM and SAP IS-U_EN_Col62.pdf   sap IUT255 Integration of SAP CRM and ...