记一次粗浅的钓鱼样本分析过程
原创稿件征集
邮箱:edu@antvsion.com
QQ:3200599554
黑客与极客相关,互联网安全领域里的热点话题漏洞、技术相关的调查或分析,稿件通过并发布还能收获200-800元不等的稿酬。
0x00 前言
一切的一切要从 (盘古开天辟地) 几个月前的某大型网安活动期间说起。话说当时一位素未谋面的基友给在下发了一个疑似钓鱼的样本,说是让我试试看下能不能溯源出攻击方。于是虽然作为一名萌新,此前也从未接触过类似的工作,但想到既然是基友的请求,那也唯有欣然接受了。不过值得庆幸的是,最后虽然折腾了大半天,而且好像也没帮上什么忙,但与样本分析的初接触过程中,还是学到了不少东西的。唯独可惜的是,由于当时的自己沉迷摸鱼,没有及时把过程记录下来。如今偶然再想起,决定补写一文章——但也只能力求复刻当时的真实情况了。所以如果发现文中一些时间戳对不上的,请自动忽略,个人认为不影响文章的真实性。。。
0x01 投石问路
因为样本是基友直接发给我的,所以样本的发现过程这里按下不表,直奔主题吧。
拿到样本,一个朴实无华的 exe 可执行文件,再看这 exe 的图标更是已经烂大街的了:
于是本着没吃过猪肉也见过猪跑的道理,想起平时摸鱼时也看过不少大佬们做过的免杀和样本分析的文章,先草率地做出了一个最简单的猜想:很可能又是一个使用 rar 自解压制作的钓鱼样本。
于是就草率地先尝试使用 bandzip 打开,发现格式不对:
显然,这样草率的猜想果然是不靠谱的,遂转换思路。
于是又想到,正所谓他山之石可以攻玉,况且自己之前在这方面也几乎零基础,那不妨先扔在线的分析网站跑一波吧,就算只搞到个大概的报告也可以供参考。于是将样本拖进 VT,立等片刻后,得到结果:
只是瞧瞧这多引擎的检测结果,居然还有点小意外?!于是这个情况顿时让我对这个样本又多了几分好奇:看来有机会还是要搞清楚这个样本是怎么制作的呀。再说作为一条有理想的咸鱼,一直这样依赖工具也不是办法,有机会还是要锻炼下自己的动手能力。于是决定为基友献出自己的”第一次“,尝试手动分析下这个样本,顺便看看它这个查杀率是怎么做到的。
0x02 循序渐进
说是手动分析,但一来自己经验不足,二来身边也没有随时可抱大腿的大佬来解疑答惑,那眼前 VT 的分析结果还是要参考下的,起码起到风向标的作用。
VT 分析结果的前面几项都没有什么特别有价值的信息。直至切换到分析结果中的 BEHAVIOR 选项卡,发现样本执行过程释放和加载了一个名为python27.dll
的动态链接库文件:
看到这,作为一名常年网上冲浪、已经将喊666刻进DNA里的资深菜鸡,我的 privilege
又尽数体现了:根据经验,这大概又是一个 PyInstaller 打包的 exe文件。
于是现学现卖,从搜索引擎得知:
PyInstaller 打包的文件可以使用一个名为
pyinstxtractor.py
的 脚本 来进行解包反编译得到pyc
文件pyc
是 python 源代码执行编译后得到的文件。可使用uncompyle6
等工具进行反编译,得到最终的 python源码因此需准备工具有:
pyinstxtractor.py
)(可github获取)、uncompyle6
(可直接使用pip install
安装)
有了以上前置知识后,那么依葫芦画瓢——下载脚本并执行: python pyinstxtractor flashplayerpp_install_cn.exe
:
幸运的是,过程十分顺利,在当前目录下生成了解压文件夹:
然后,根据资料,在解压目录中找到可疑的 pyc
文件,名为 main
:
按照剧本,这里的 main
应该就是 main.py
编译之后得到的 pyc
文件。但实际操作中,无论是使用在线反编译工具如 http://tools.bugscaner.com/decompyle/,还是本地的 uncompyle6
和 EasyPythonDecompiler
,发现都无法反编译成功。尤其是 uncompyle6
,执行 uncompyle6 -o main.py main.pyc
后给出了详细报错:
根据报错信息不难发现,报错与一个 magic number
的概念有关。因此要想继续分析流程,就必须先解决 magic number
的问题。
于是继续求助搜索引擎。得到解释如下:
magic number
是pyc
文件结构的一部分,其位于文件开头的前 4 个字节,代表了 python 的版本信息。- 出现
unknown magic number
错误,很可能是制作样本的钓鱼佬对pyc
文件做了手脚。这种情况在 CTF 中也比较常见 - 在知道 python 版本的情况下,可通过补全
magic number
信息来尝试修复无法还原的pyc
文件
0x03 原来是虚晃一枪
老实说,看完上面收集回来的信息,我当时的表情就是这样的:
显然,事情到这一步已经超出了一个我这个菜鸡的预期了。
所以说,要半途而废嘛,也不是没想过。。。可气氛都渲染到这里了,不继续下去好像也不太说得过去的样子。。。
于是,本着准备手动修复 magic number
信息的想法, winhex 打开 main.pyc,却惊喜地发现:
main
文件里面的竟然是源码明文?!!
这。。这。。。这是咋回事呢?跟说好的剧本不一样啊。。这样难道不会影响打包的 exe 文件的运行的吗?难道这就是这个样本被查杀率不高的原因?
于是本着知其所以然的心态,本人又围绕这这个问题,尝试找了不少资料。但可惜水平有限,最终也是没找到相应的解释,对此还希望有知道的师傅能指教一二。。。
不过言归正传,既然拿到了 python 的源码,那一切就好办了。。
直接将 main.pyc
改名为 main.py
,用 sublime 打开,得到:
简单看了下源码,发现执行的过程如下:
- 1、
is_admin
函数先判断是否为管理员权限,如果不是,则调用 API 请求以管理员身份运行该样本 - 2、如果当前已经是管理员权限,则执行
NDdFrvsmTh
函数 - 3、
NDdFrvsmTh
函数开辟两个线程,一个线程执行TFZWSTEcc
函数下载真正的 flash 安装包到本地执行安装,另一个线程执行TENRWCTE
函数加载 shellcode 使主机上线 - 4、
TFZWSTEcc
函数先从远程地址 https://www.xxx.us/xxxxxyyyyyyvszzzzz 加载 CS 的shellcode,然后几句cPickle.loads
分别为 shellcode 的执行分配内存空间、设置执行权限、创建线程并最终执行:
(PS:可能是我愚钝,总之一番概览下来,好像除了从远程加载 shellcode 而不是硬编码到代码中去之外,也没啥特别的。。。?所以至此 VT 的这个 6/64 的查杀率似乎也成了我的一个未解之谜。。
记一次粗浅的钓鱼样本分析过程相关推荐
- 记一次钓鱼邮件分析过程
今天打开邮件,无意中发现了一封全英文的报价信息邮件,附件是 html 的网页文件.NND,我们就一个破小公司充其量也就做几单本地业务哪来的国际大单呢,嘿嘿,既然人家给咱报价了,来而不忘非礼也.那就动手 ...
- 初入门径 --- 护网钓鱼样本分析
最近半个月都在学<恶意代码分析实战>,想拿真实的恶意软件进行分析一下.正好朋友发了一个过来.(应该是护网的钓鱼文件) 0x01 文件分析 总共包括三个文件:2021年机关员工(子女)名单. ...
- 记一次联通路由器劫持的分析过程
这里说一个比较奇怪的PC故障,一朋友电脑可以正常登陆QQ但是打开网页无论是什么页面都会自动跳转到一个网页,这个地方联通宽带的页面上,这里说一下朋友的网络是电信跳转到联通相关页面肯定不正常,跟很多人一样 ...
- 一款专门针对高质量女性的易语言钓鱼样本简单分析
本文首发于合天智汇:网络靶场_在线网络安全学习平台|合天智汇 由于一直没怎么分析过易语言的样本,想学习一下易语言的样本分析过程,正好最近碰见了一个易语言编写的样本,是一个专门针对人类高质量女性进行钓鱼 ...
- [系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 记一次lpk劫持样本分析
lpk.dll病毒是比较常见的一类病毒,系统本身的lpk.dll文件位于C:\WINDOWS\system32和C:WINDOWS\system\dllcache目录. lpk.dll病毒的典型特征是 ...
- 慢雾:Discord 私信钓鱼手法分析
事件背景 5 月 16 日凌晨,当我在寻找家人的时候,从项目官网的邀请链接加入了官方的 Discord 服务器.在我加入服务器后立刻就有一个"机器人"(Captcha.bot)发来 ...
- NEMUCOD病毒jse样本分析
该病毒使用微软的JScript编写,能够直接运行在Windows操作系统之上,采用了加密和混淆手段对抗监测,可检测是否运行在虚拟机中和系统中是否存在分析工具,可感染可移动存储介质,主要功能为下载器.C ...
- 一例针对中国政府机构的准APT攻击中所使用的样本分析
SwordLea · 2015/05/28 15:43 作者:安天 微信公众号:Antiylab 博文地址:http://www.antiy.com/response/APT-TOCS.html 0x ...
最新文章
- Android系统截屏的实现(附代码)
- python正则表达式修饰符_python正则表达式,看完这篇文章就够了...
- 第五章数理统计--样本和抽样分布
- 推特超2K赞,DeepMind强化学习综述:她可以很快,但快从慢中来
- 绿盟漏洞扫描_二十周年专题|绿盟极光,用专注惊艳了时光
- python中__init__.py是干什么的
- R语言将数据框中的字符类型数字转换为数值
- Spring的9种设计模式(三)总结
- IDEA如何使用SVN插件
- 天线分类特征学习笔记(1)偶极子天线
- 机器学习库sklearn之怎么划分训练集和测试集
- 制作一个简单HTML传统端午节日网页(HTML+CSS)
- linux解决依赖性问题
- 机器学习实战-决策树 java版代码开发实现
- 网站图标开发指南(精)
- Causal Intervention for Weakly-Supervised Semantic Segmentation
- 鼠标点击特效:canvas点击效果
- 传说之下打开debug模式超超超超超超超超详细方法
- 解析IT行业技术微企诱惑:人员不多 效益很好
- 【转】做Rom其实没什么奥秘,浅显易懂的补丁制作教程,带刷机脚本示例
热门文章
- 计算机常用的英语简写,计算机常用的英文名称和缩写
- 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest K. The Robot
- Field_II test 1
- 易语言单卡网络验证UI界面源码
- Mybatis按年月日时分秒查询,MySQL年月日时分秒查询
- STM32——STM32简介与创建工程
- Vue中 path和name的区别是什么
- 换一种思维方式之罗浩的《降级论》
- 没空看新闻?教你获取实时新浪新闻
- 【天光学术】国际经济贸易论文:跨境电商普惠贸易现状与发展建议(节选)