网络安全日报 2025年02月27日
1、黑客利用假冒Chrome安装程序传播SecTopRAT
https://www.malwarebytes.com/blog/news/2025/02/sectoprat-bundled-in-chrome-installer-distributed-via-google-ads 网络安全研究人员发现,恶意软件SecTopRAT正通过伪装成Google Chrome浏览器的安装程序进行传播。攻击者利用Google Ads投放虚假广告,引导用户进入欺诈性Google Sites页面,最终下载伪装的Chrome安装程序。该程序在安装合法Chrome浏览器的同时,秘密投放SecTopRAT恶意软件,窃取用户敏感信息。
2、新型恶意软件GhostSocks威胁金融机构
https://infrawatch.app/blog/ghostsocks-lummas-partner-in-proxy 研究团队分析了一种名为GhostSocks的恶意软件,这是一种基于Golang的SOCKS5反向连接代理工具,主要与LummaC2信息窃取程序集成使用。GhostSocks通过混淆技术、中继通信和恶意软件即服务(MaaS)模式,为攻击者提供代理能力,使其能够绕过金融机构的安全控制并滥用受害者IP地址进行非法活动。该工具还支持任意命令执行、下载和执行恶意文件等后门功能。
3、恶意软件ACRStealer利用谷歌文档作为C2服务器
https://asec.ahnlab.com/en/86390/ ACRStealer是一款伪装成破解程序和密钥生成器的信息窃取恶意软件,其传播量在2025年显著增加。该恶意软件通过合法平台Google Docs、Steam和Telegra.ph作为中间C2服务器,利用Dead Drop Resolver(DDR)技术隐藏真实C2地址,从而绕过传统安全检测。ACRStealer能够窃取浏览器数据、加密货币钱包、FTP凭证、聊天记录、电子邮件信息以及密码管理器数据等多种敏感信息。
4、澳大利亚因国家安全和间谍担忧禁用卡巴斯基软件
https://thehackernews.com/2025/02/australia-bans-kaspersky-software-over.html 澳大利亚内政部以国家安全和间谍活动担忧为由,禁止政府机构使用俄罗斯卡巴斯基公司的安全软件。内政部秘书长斯蒂芬妮·福斯特表示,卡巴斯基产品可能带来外国干涉和数据泄露风险,要求所有政府实体在2025年4月1日前移除相关软件,并禁止新安装。此前,美国已于2024年6月全面封禁卡巴斯基软件。
5、攻击者利用MSSQL服务器漏洞部署挖矿工具
https://www.seqrite.com/blog/pkt-monero-mining-mssql-malware/ 研究人员近期发现攻击者利用MSSQL服务器漏洞部署加密货币挖矿工具,主要涉及PKT Classic和Monero两种加密货币。攻击者通过SQL注入漏洞,利用Windows系统工具和PowerShell脚本下载并执行挖矿程序,如PacketCrypt(用于PKT)和XMRIG(用于Monero)。这些工具消耗大量系统资源,降低系统性能并增加硬件损耗。攻击者通过默认钱包地址或自定义地址接收挖矿收益。
6、新型恶意软件ClickFix通过伪造reCAPTCHA传播
https://blog.sucuri.net/2025/02/wordpress-clickfix-malware-causes-google-warnings-and-infected-computers.html 安全公司发现一种名为“ClickFix”的新型恶意软件,通过伪造的Google reCAPTCHA诱使用户执行恶意PowerShell命令,从而感染其计算机。攻击者利用恶意WordPress插件和主题文件注入的方式传播该恶意软件,目前已感染超过5200个网站。
7、微软修复Entra ID DNS身份验证问题
https://www.bleepingcomputer.com/news/microsoft/microsoft-fixes-entra-id-authentication-issue-caused-by-dns-change/ 近日,微软修复了由DNS更改导致的Microsoft Entra ID身份验证问题。此次问题影响了使用Seamless SSO和Microsoft Entra Connect Sync的用户,导致在2月25日17:18 UTC至18:35 UTC期间,autologon.microsoftazuread.sso.com域的DNS解析失败。微软表示,问题是由删除重复
8、2.84亿账户遭信息窃取木马窃取,HIBP紧急更新数据库
https://www.freebuf.com/news/422886.html Have I Been Pwned(HIBP)数据泄露通知服务近日新增了2.84亿个被信息窃取木马(infostealer)窃取的账户。这些账户数据是在一个名为“ALIEN TXTBASE”的Telegram频道中被发现的。HIBP的创始人Troy Hunt表示,在分析1.5TB的窃取日志时,他发现了284,132,969个被泄露的账户。这些日志可能来自多个来源,并在Telegram频道上共享。他在一篇博客中写道:“这些日志包含230亿行数据,涉及4.93亿个独特的网站和电子邮件地址组合,影响了2.84亿个唯一
9、LockBit威胁FBI新任局长,声称掌握能摧毁该机构的“机密信息”
https://securityaffairs.com/174639/cyber-crime/lockbit-taunts-fbi-director-kash-patel.html 勒索软件组织LockBit向新上任的FBI局长卡什·帕特尔发送了一条奇怪讯息,声称其掌握了“机密信息”,如果这些信息被公开,将可能“摧毁”FBI。
10、H-CoT攻击揭示大型推理模型严重漏洞
https://mp.weixin.qq.com/s/jDEo-grSHZzPrrqMRfjL1w 随着大型推理模型(LRMs)在复杂任务中的广泛应用,其安全性和可靠性成为关键问题。OpenAI的o1/o3系列、DeepSeek-R1和谷歌的Gemini 2.0 Flash Thinking等模型通过思维链(Chain-of-Thought, CoT)推理机制进行安全决策,旨在平衡模型效用与内容无害性。然而,这种机制是否足够稳健,能否抵御复杂的攻击,仍是一个未解之谜。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
安全测试中的js逆向实战
一、简介
对于常见的web或者h5的场景中,一些重要的系统都会对于参数或者敏感数据进行校验,防止被恶意篡改而利用。因此在安全测试过程中,对于一些越权、注入等测试,需要对参数值进行修改重放,那么这个过程是否能够成功第一步取决于是否可以搞定校验算法并成功绕过。因此本文主要介绍安全测试中常用的一些js逆向的技术手段。
当然对于web场景中安全测试会遇到的一些校验场景,一般包括如下两类:
1)请求参数签名验证
2)请求、响应内容加密
二、常见浏览器调试方法
js中校验算法的查找定位以及逆向分析,需要对浏览器中的部分功能模块熟练掌握,接下来对其中的面板功能、断点调试方法以及断点天机方法进行介绍。
2.1 浏览器面板功能
chrome浏览器中的面板包括元素、控制台、源代码、网络、性能、内存以及应用等多个。重点介绍常见面板功能。
元素(Elements):可以查看DOM结构、编辑CSS样式,用于测试页面布局和设计页面;
控制台(Console):执行JavaScript脚本,也可以通过Console和页面中的Javascript对象交互;
源代码(Sources):查看Web应用加载的所有文件;编辑CSS和JavaScript文件内容,包括如下:(page: 所有资源文件;filesystem: 关联本地文件;overrides:可以做文件替换,比如替换JS;代码段:可以编写脚本,影响页面,代码记录);
网络(Network):展示页面中所有的请求内容列表,能查看每项的请求头、请求行、请求体、时间线以及网络请求的瀑布图等信息;
性能(Performance):分析网页的性能表现,包括加载时间,CPU使用率、内存占用等。可以录制网页的运行过程,进行详细的性能分析;
内存(Memory):用于记录和分析页面占用内存的情况;
应用(Application):查看Web应用的数据存储情况;IndexedDB;WebSQL;本地和会话存储;Cookie;应用程序缓存图像字体和样式表等。
2.2 断点添加方式
js逆向分析中有一个非常重要的功能需要掌握,就是下断点,接下来对常用断点方式进行介绍。
1)点击关键代码进行进行断点:通过点击代码便可以下断点
2)XHR断点:执行比较靠后,距离加密函数相对较近,可以根据栈快速定位
点击+号后直接输入需要定位的接口地址即可
3)DOM事件断点:执行的比较靠前,距离加密函数比较远
在Chrome开发者工具的Elements标签页中,找到你想要设置断点的DOM元素,右键点击该元素,选择"Breakon"选项,然后根据需要选择以下三种断点之一:
Subtree Modifications:当该节点的子树发生变化时触发断点。
Attributes Modifications:当该节点的属性发生变化时触发断点。
Node Removal:当该节点被移除时触发断点
2.3 断点调试方法
通过设置断点,运行程序后就会断在设置好的断点处,这时就需要跟进代码执行,分析代码和数据的变化,梳理判断出校验的算法和逻辑,好进行利用。
图中红框依次功能如下:
跳过子函数(次态函数)执行(只在主函数内一步一步执行,不进入子函数内部)
进入子函数(次态函数)执行(在主函数内部一步一步执行,如果遇到子函数,会跳转到子函数内部一步一步执行)
跳出当前函数,回到调用位置
单步执行,会进入到函数内部 更加的细致
屏蔽断点
三、js逆向分析实战
了解了一些基础的调试操作内容,接下来针对js的逆向分析进行实操,本次主要以请求参数的签名验证和响应内容的加密两方面进行分析和绕过实战,这也是平时安全测试过程中最常见的两种场景。
3.1 请求参数签名验证实战
通过抓包可以看到该请求体中存在sign参数,值为一段数字字母
修改page内容,重新进行提交请求,返回错误,那么这时候想要测试注入等手法都是无法成功的,因为当重放是sign值是未变的,所以后端验证也是不通过的。接下来首先就需要找出sign的算法逻辑,尝试绕过后才可以进行测试。
3.1.1 算法分析
通过数据包分析判断为sign参数为参数校验,因此在调试解密直接搜索关键词sign=,成功在代码中查询到,
可以看到sign=Xt(a)这个方法,在此处点击下断点
通过断点可以看到Xt()方法中传入了n,n为一系列用户端数据和key值生成,
继续进入下一个函数调用,可以看到为Vt(),并传入了上边的t作为参数
查看Vt()方法实际名称为Et
进入Et函数,发现分别执行Rt->At->Tt三个方法,将最终执行完的结果返回。
三个方法具体内容也是在一起,依次进行执行,执行完Rt进入At执行
可以看到At中又包括Lt->Nt->Dt三个函数
依次进行下一个函数进行执行
进入Lt函数执行,可以发现大量循环操作等执行,如果没有太多意义可以跳出当前函数,进行下一个函数的执行
通用的执行方法进行Nt和Dt两个函数的执行和分析
当At函数执行完,可以看到返回了一串值
再进入Tt中执行
可以看出其实是一个字符串的对比操作
继续执行完Et后可以看出返回了遗传字符,应该就是我们的sign的值
继续跟进,可以看到对于这段值有做了一次大写的操作
完成后进行了返回
那这个时候也就分析完成了,我们可以确认Xt函数将入参执行完成后就会返回为sign用来做校验
在控制台获取传入的n值,并打印Xt(n)方法,额可以看到成功打印出我们需要的sign值
3.1.2 算法逆向绕过实战
通过上述的分析,可以看出该程序中的sign的获取是通过Xt()函数传入n值进行生成的,n为一个固定格式的用户的参数,那么便可以通过修改n的值生成sign来绕过校验了,接下来我们通过三种方法进行实操。
3.1.2.1 浏览器校验调用
抓包获取到详细数据包
修改参数重放失败
在获取到的n中将对应的参数page的值进行修改,打印Xt(n)生成一个新的sign
修改burp中的sign进行重放,成功获得数据,那么接下来便可以进行各类payload的参数测试了。
3.1.2.2 在线算法生成
通过该sign的值内容和长度可以初步判断出为md5加密所得,及Xt()方法为一个md5算法,因此利用在线md5平台,传入n的值,修改page参数重新生成大写的sign值
修改burp中的sign,成功重放
3.1.2.3 js代码补环境复用
通过算法分析可以看出主要调用Et()方法后进行一系列的函数调用,最后返回了需要的sign值,那么这时我们将该js中调用执行过的方法进行复制,在本地新建一个js,粘贴其中,最终打印Et()方法,Et中传入需要的值,也就是n,然后进行运行,如果存在报错缺少方法,缺哪个便去js中复制那个。
完成后执行该js文件,发现成功生成需要的值。
具体代码如下:
var St = 0;
function Et(s) {
return Tt(At(Rt(s)))
}
function At(s) {
return Dt(Nt(Lt(s), 8 * s.length))
}
function Tt(input) {
for (var t, e = St ? "0123456789ABCDEF" :
"0123456789abcdef", output = "", i = 0; i < input.length; i++)
t = input.charCodeAt(i),
output += e.charAt(t >>> 4 & 15) + e.charAt(15 & t);
return output
}
function Rt(input) {
for (var t, e, output = "", i = -1; ++i < input.length; )
t = input.charCodeAt(i),
e = i + 1 < input.length ? input.charCodeAt(i + 1) : 0,
55296 <= t && t <= 56319 && 56320 <= e && e <= 57343 &&
(t = 65536 + ((1023 & t) << 10) + (1023 & e),
i++),
t <= 127 ? output += String.fromCharCode(t) : t <= 2047 ?
output += String.fromCharCode(192 | t >>> 6 & 31, 128 | 63 & t) : t
<= 65535 ? output += String.fromCharCode(224 | t >>> 12 & 15, 128
| t >>> 6 & 63, 128 | 63 & t) : t <= 2097151 && (output +=
String.fromCharCode(240 | t >>> 18 & 7, 128 | t >>> 12 & 63, 128
| t >>> 6 & 63, 128 | 63 & t));
return output
}
function Lt(input) {
for (var output = Array(input.length >> 2), i = 0; i <
output.length; i++)
output[i] = 0;
for (i = 0; i < 8 * input.length; i += 8)
output[i >> 5] |= (255 & input.charCodeAt(i / 8)) <<
i % 32;
return output
}
function Dt(input) {
for (var output = "", i = 0; i < 32 * input.length; i += 8)
output += String.fromCharCode(input[i >> 5] >>> i %
32 & 255);
return output
}
function Nt(t, e) {
t[e >> 5] |= 128 << e % 32,
t[14 + (e + 64 >>> 9 << 4)] = e;
for (var a = 1732584193, b = -271733879, n = -1732584194, r =
271733878, i = 0; i < t.length; i += 16) {
var o = a
, c = b
, l = n
, f = r;
a = qt(a, b, n, r, t[i + 0], 7, -680876936),
r = qt(r, a, b, n, t[i + 1], 12, -389564586),
n = qt(n, r, a, b, t[i + 2], 17, 606105819),
b = qt(b, n, r, a, t[i + 3], 22, -1044525330),
a = qt(a, b, n, r, t[i + 4], 7, -176418897),
r = qt(r, a, b, n, t[i + 5], 12, 1200080426),
n = qt(n, r, a, b, t[i + 6], 17, -1473231341),
b = qt(b, n, r, a, t[i + 7], 22, -45705983),
a = qt(a, b, n, r, t[i + 8], 7, 1770035416),
r = qt(r, a, b, n, t[i + 9], 12, -1958414417),
n = qt(n, r, a, b, t[i + 10], 17, -42063),
b = qt(b, n, r, a, t[i + 11], 22, -1990404162),
a = qt(a, b, n, r, t[i + 12], 7, 1804603682),
r = qt(r, a, b, n, t[i + 13], 12, -40341101),
n = qt(n, r, a, b, t[i + 14], 17, -1502002290),
a = Ft(a, b = qt(b, n, r, a, t[i + 15], 22, 1236535329),
n, r, t[i + 1], 5, -165796510),
r = Ft(r, a, b, n, t[i + 6], 9, -1069501632),
n = Ft(n, r, a, b, t[i + 11], 14, 643717713),
b = Ft(b, n, r, a, t[i + 0], 20, -373897302),
a = Ft(a, b, n, r, t[i + 5], 5, -701558691),
r = Ft(r, a, b, n, t[i + 10], 9, 38016083),
n = Ft(n, r, a, b, t[i + 15], 14, -660478335),
b = Ft(b, n, r, a, t[i + 4], 20, -405537848),
a = Ft(a, b, n, r, t[i + 9], 5, 568446438),
r = Ft(r, a, b, n, t[i + 14], 9, -1019803690),
n = Ft(n, r, a, b, t[i + 3], 14, -187363961),
b = Ft(b, n, r, a, t[i + 8], 20, 1163531501),
a = Ft(a, b, n, r, t[i + 13], 5, -1444681467),
r = Ft(r, a, b, n, t[i + 2], 9, -51403784),
n = Ft(n, r, a, b, t[i + 7], 14, 1735328473),
a = Ut(a, b = Ft(b, n, r, a, t[i + 12], 20, -1926607734),
n, r, t[i + 5], 4, -378558),
r = Ut(r, a, b, n, t[i + 8], 11, -2022574463),
n = Ut(n, r, a, b, t[i + 11], 16, 1839030562),
b = Ut(b, n, r, a, t[i + 14], 23, -35309556),
a = Ut(a, b, n, r, t[i + 1], 4, -1530992060),
r = Ut(r, a, b, n, t[i + 4], 11, 1272893353),
n = Ut(n, r, a, b, t[i + 7], 16, -155497632),
b = Ut(b, n, r, a, t[i + 10], 23, -1094730640),
a = Ut(a, b, n, r, t[i + 13], 4, 681279174),
r = Ut(r, a, b, n, t[i + 0], 11, -358537222),
n = Ut(n, r, a, b, t[i + 3], 16, -722521979),
b = Ut(b, n, r, a, t[i + 6], 23, 76029189),
a = Ut(a, b, n, r, t[i + 9], 4, -640364487),
r = Ut(r, a, b, n, t[i + 12], 11, -421815835),
n = Ut(n, r, a, b, t[i + 15], 16, 530742520),
a = Bt(a, b = Ut(b, n, r, a, t[i + 2], 23, -995338651), n,
r, t[i + 0], 6, -198630844),
r = Bt(r, a, b, n, t[i + 7], 10, 1126891415),
n = Bt(n, r, a, b, t[i + 14], 15, -1416354905),
b = Bt(b, n, r, a, t[i + 5], 21, -57434055),
a = Bt(a, b, n, r, t[i + 12], 6, 1700485571),
r = Bt(r, a, b, n, t[i + 3], 10, -1894986606),
n = Bt(n, r, a, b, t[i + 10], 15, -1051523),
b = Bt(b, n, r, a, t[i + 1], 21, -2054922799),
a = Bt(a, b, n, r, t[i + 8], 6, 1873313359),
r = Bt(r, a, b, n, t[i + 15], 10, -30611744),
n = Bt(n, r, a, b, t[i + 6], 15, -1560198380),
b = Bt(b, n, r, a, t[i + 13], 21, 1309151649),
a = Bt(a, b, n, r, t[i + 4], 6, -145523070),
r = Bt(r, a, b, n, t[i + 11], 10, -1120210379),
n = Bt(n, r, a, b, t[i + 2], 15, 718787259),
b = Bt(b, n, r, a, t[i + 9], 21, -343485551),
a = zt(a, o),
b = zt(b, c),
n = zt(n, l),
r = zt(r, f)
}
return Array(a, b, n, r)
}
function Mt(q, a, b, t, s, e) {
return zt((n = zt(zt(a, q), zt(t, e))) << (r = s) | n >>>
32 - r, b);
var n, r
}
function qt(a, b, t, e, n, s, r) {
return Mt(b & t | ~b & e, a, b, n, s, r)
}
function Ft(a, b, t, e, n, s, r) {
return Mt(b & e | t & ~e, a, b, n, s, r)
}
function Ut(a, b, t, e, n, s, r) {
return Mt(b ^ t ^ e, a, b, n, s, r)
}
function Bt(a, b, t, e, n, s, r) {
return Mt(t ^ (b | ~e), a, b, n, s, r)
}
function zt(t, e) {
var n = (65535 & t) + (65535 & e);
return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535
& n
}
console.log(Et("test"));
那么这个时候再传入n,及前面获取到的实际字段,并修改page的值重新生成
burp中替换sign重放,成功获取到数据
3.2 请求、响应内容加密
安全测试中,除了参数的校验之外,还有一类就是请求或者响应内容的加密,那么需要测试就必须先解密,看到原始内容才可以进行,本次以响应内容加密作为案例进行分析实操。
3.2.1 算法分析
通过截图可以看到,利用系统可以做翻译,
但是实际接口返回值是加密的,因此需要通过抓包接口测试,必须找到解密算法,获取响应内容
在源代码中进行XHR断点设置,添加uri为断点
输入数据,成功断下,可以看到断到了send函数,这个其实是向服务器发包的一个方法
跳过到下一个函数进行执行
可以看到data为key值等
继续跳过执行,可以看到成功获取到返回的加密值
再跳过执行可以看到执行该函数da.A.decodeData(),从名称也可以看出为一个解码的函数,分别传入了o和key以及iv,那么o为加密的值,key和iv分别为前面获取到的内容,执行完成后成功返回了解密后的明文数据
那么通过控制台面板,出入o为加密值,复制da.A.decodeData()进行执行,成功获得解密的数据。
3.2.2 算法逆向绕过
通过上述算法成功获取到具体的解密函数,这时利用burp抓包,修改参数为各类payload,进行重放
将获取到的加密数据,通过控制台面板传入o,并调用da.A.decodeData()成功获取原始数据,达到测试的效果。
当然,通过该解密方法的传值和分析,其实也可以看出是什么加密算法,也可以直接通过编写本地算法代码进行解密,具体不再详细赘述。
四、总结
对于安全测试或者漏洞挖掘中,这类js的加密校验也是越来越多,目的也是为了达到测试攻击等行为的成本,要想完成测试首先需要分析或者绕过校验参数,对于测试或者漏洞挖掘来说,怎么速度更快更能高效的达到算法的绕过其实目的就达到了。根据上述列出的两类场景和分析实战方法,便可以满足大部分的js逆向场景。
网络安全日报 2025年02月26日
1、攻击者利用PayPal新地址功能发送钓鱼邮件
https://www.bleepingcomputer.com/news/security/beware-paypal-new-address-feature-abused-to-send-phishing-emails/ 近期,PayPal的“新地址”功能被诈骗者利用,发送虚假购买通知的钓鱼邮件。这些邮件伪装成PayPal官方通知,声称用户添加了新地址,并附有虚假的购买确认信息,如MacBook订单,诱导用户拨打诈骗电话。诈骗者通过电话引导受害者下载恶意软件,以获取远程访问权限,进而窃取资金或数据。此类邮件通过PayPal的邮件服务器发送,绕过了安全和垃圾邮件过滤器。
2、黑客劫持YouTube账号伪造CS2玩家直播实施诈骗
https://www.bitdefender.com/en-us/blog/hotforsecurity/streamjacking-scams-on-youtube-leverage-cs2-pro-player-championships-to-defraud-gamers 安全人员警告《反恐精英2》(CS2)玩家,诈骗者正利用IEM卡托维兹2025和PGL克卢日-纳波卡2025等大型电竞赛事进行诈骗活动。诈骗者通过劫持YouTube账号,冒充知名职业选手如s1mple、NiKo等,发起虚假直播,诱导玩家参与CS2皮肤赠送或加密货币奖励活动。受害者可能被要求使用Steam账号登录或发送
3、Bybit冷钱包遭攻击价值14.6亿美元加密货币被盗
https://x.com/Bybit_Official/status/1892965292931702929 近日,加密货币交易所Bybit确认其以太坊冷钱包在一次复杂攻击中被盗,损失高达14.6亿美元的加密货币,创下史上最大加密货币盗窃案。攻击者通过伪装交易界面和篡改智能合约逻辑,将资产转移至未知地址。Bybit表示,其他冷钱包安全,已向有关部门报案。研究人员指出,此次事件可能与朝鲜黑客组织Lazarus Group有关。
4、OmniGPT聊天平台遭入侵3万名用户信息泄露
https://cyble.com/blog/omnigpt-leak-risk-ai-data/ 近期,AI聊天机器人平台OmniGPT被黑客入侵,导致约3万名用户的电子邮件、电话号码以及超过3400万条聊天记录泄露。泄露数据包括个人身份信息、财务信息、API密钥等敏感内容。此次事件凸显了在AI平台上使用敏感数据的风险,提醒企业和用户必须重视数据安全和隐私保护。专家建议,用户应立即更改密码、启用双重验证,并监控异常活动。
5、恶意软件SPAWNCHIMERA利用Ivanti漏洞进行攻击
https://blogs.jpcert.or.jp/en/2025/02/spawnchimera.html 2025年1月,Ivanti发布了关于其Ivanti Connect Secure产品漏洞CVE-2025-0282的公告。JPCERT/CC确认,自2024年12月底以来,多个攻击组织已利用该漏洞实施攻击,并在日本发生多起案例。与此同时,SPAWN恶意软件家族的最新变种SPAWNCHIMERA被发现,其整合了SPAWNANT、SPAWNMOLE和SPAWNSNAIL的功能,并在进程注入和通信方式上进行了显著更新。
6、假冒DeepSeek网站传播恶意软件感染Mac用户
https://www.esentire.com/blog/fake-deepseek-site-infects-mac-users-with-poseidon-stealer 安全人员发现了一起针对Mac用户的恶意软件攻击,攻击者通过假冒的DeepSeek网站传播Poseidon Stealer信息窃取程序。该恶意软件主要针对与Chromium和Firefox浏览器相关的敏感数据,其具备反调试和字符串加密技术,能窃取用户的全面系统信息和敏感数据,并通过C2服务器传输收集的信息。
7、新型恶意软件GhostSocks威胁金融机构
https://infrawatch.app/blog/ghostsocks-lummas-partner-in-proxy 研究团队分析了一种名为GhostSocks的恶意软件,这是一种基于Golang的SOCKS5反向连接代理工具,主要与LummaC2信息窃取程序集成使用。GhostSocks通过混淆技术、中继通信和恶意软件即服务(MaaS)模式,为攻击者提供代理能力,使其能够绕过金融机构的安全控制并滥用受害者IP地址进行非法活动。该工具还支持任意命令执行、下载和执行恶意文件等后门功能。
8、研究人员发布Parallels Desktop中0-Day漏洞PoC
https://jhftss.github.io/Parallels-0-day/ 安全研究人员揭露了Parallels Desktop中的一个0day漏洞,该漏洞允许攻击者绕过CVE-2024-34331的修补,提升Root权限。研究人员发现了两种绕过方法,并向Zero Day Initiative (ZDI)和Parallels相继报告。尽管该问题已告知供应商超过七个月,但Parallels并未采取有效措施加以解决。这促使研究人员最终决定公开此漏洞,以提高用户的警惕性。
9、Exim修复邮件传输代理SQL注入漏洞
https://gbhackers.com/exim-mail-transfer-vulnerability 安全研究人员发现Exim邮件传输代理(MTA)存在SQL注入漏洞(CVE-2025-26794)。该漏洞存在于Exim 4.98版本中,攻击者可通过特制的ETRN请求注入恶意SQL代码,破坏邮件系统并操纵底层数据库。Exim团队已在漏洞曝光后72小时内发布修复版本4.98.1。建议用户立即检查系统版本并应用官方补丁,以防止潜在攻击。
10、Fluent Bit 0day漏洞使数十亿个生产环境面临网络攻击
https://cybersecuritynews.com/fluent-bit-0-day-vulnerabilities-exposes-billions-of-production-environments/ 研究人员在 Fluent Bit 中发现了关键的零日漏洞,Fluent Bit 是一种无处不在的日志记录实用程序,嵌入在 AWS、Google Cloud 和 Microsoft Azure 等主要提供商的云基础设施中。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年02月21日
1、StaryDobry利用破解游戏传播挖矿木马
https://securelist.com/starydobry-campaign-spreads-xmrig-miner-via-torrents/115509/ 研究人员近期发现代号为“StaryDobry”的大规模网络攻击活动,攻击者通过篡改热门游戏安装包传播XMRig挖矿程序。该活动利用节假日用户警惕性降低的时机,提前上传恶意安装程序至种子网站,以降低被发现的风险。用户下载这些安装程序后,恶意软件会通过复杂的感染链收集系统信息,并在满足条件时启动挖矿程序。此次攻击主要影响俄罗斯、巴西、德国、白俄罗斯和哈萨克斯坦的用户。研究人员提醒用户仅从官方渠道下载软件,并保持安全防护工具更新,以
2、黑客使用隐形混淆技术发起网络钓鱼攻击
https://blogs.juniper.net/en-us/threat-research/invisible-obfuscation-technique-used-in-pac-attack 研究人员一种新的JavaScript混淆方法被黑客广泛应用于针对美国政治行动委员会(PAC)附属机构的网络钓鱼攻击中。攻击者利用不可见的Unicode字符,特别是韩文半角(U+FFA0)和韩文全角(U+3164),将每个ASCII字符转换为8位二进制表示形式,并用这些不可见字符替代二进制值,隐藏恶意代码。这种混淆技术使得有效负载在JavaScript代码中看似为空,降低了被安全扫描程序标记为恶意的
3、CISA和FBI联合发布Ghost勒索软件威胁报告
https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-050a FBI、CISA及多州信息共享与分析中心(MS-ISAC)联合发布了针对Ghost (Cring) 勒索软件的警告,建议立即采取行动以减轻与此勒索软件相关的网络威胁。该勒索软件自2021年初开始攻击多个国家的组织,并利用多种已知漏洞进行渗透,受影响的领域包括关键基础设施、医疗、教育、宗教机构及中小企业。Ghost攻击者使用Cobalt Strike等工具进行攻击,通常在入侵后仅停留几天即进行勒索。攻击者通过加密文件索要赎金,金额通常达到数万至数十万美元的加密
4、研究人员发现Snake键盘记录器新变种
https://www.fortinet.com/blog/threat-research/fortisandbox-detects-evolving-snake-keylogger-variant 最近检测到一个新变种的Snake键盘记录器(又称404 Keylogger),其恶意软件标识为AutoIt/Injector.GTY!tr。这一变种通过网络钓鱼邮件传播,旨在静默记录用户击键、捕获浏览器凭据并监控剪贴板信息。在全球范围内,已发现超过2.8亿次感染尝试,受影响地区包括中国、土耳其、印度尼西亚、台湾和西班牙。
5、9万个WordPress站点面临本地文件包含漏洞攻击
https://www.freebuf.com/vuls/422277.html WordPress的Jupiter X Core插件存在严重安全漏洞,使得超过9万个网站面临本地文件包含(LFI)和远程代码执行(RCE)攻击的风险。该漏洞被追踪为CVE-2025-0366,CVSS评分为8.8(高危),允许具有贡献者权限的攻击者上传恶意的SVG文件并在受影响的服务器上执行任意代码。
6、警惕!利用AI深度伪造视频的新型“自骗”攻击浪潮来袭
https://www.freebuf.com/articles/network/422271.html 近日,一种名为“自骗”的新型攻击手段正在瞄准加密货币爱好者和金融交易者。这种攻击利用AI生成的深度伪造(Deepfake)视频和恶意脚本,标志着社交工程技术的一次危险升级。网络安全公司Gen Digital的研究人员发现,该攻击活动通过利用经过验证的YouTube频道、合成人物形象以及AI制作的恶意载荷,诱使受害者主动破坏自己的系统。
7、雅虎数据泄露事件:黑客兜售60.2万个电子邮件账户
https://www.freebuf.com/articles/database/422266.html 近期,一名化名为“exelo”的黑客涉嫌在地下论坛上兜售一个包含60.28万个雅虎电子邮件账户的数据库。该帖子声称,这些数据是“私密且非俄罗斯来源的”。完整的数据库售价未公开,但卖家据称向感兴趣的买家提供了5万个账户的免费样本作为测试。
8、俄罗斯APT组织利用恶意二维码劫持Signal账户
https://www.freebuf.com/news/422311.html 近日,谷歌威胁情报小组(Google Threat Intelligence Group, GTIG)发布报告称,多个与俄罗斯相关的威胁组织正针对Signal通讯应用发起攻击,目标是俄罗斯情报机构感兴趣的个人用户。专家预测,这种针对Signal的攻击手法将在近期广泛传播,并可能扩展到乌克兰以外的地区。
9、黑客通过漏洞组合攻击获得Palo Alto防火墙的root权限
https://www.freebuf.com/vuls/422270.html Palo Alto Networks PAN-OS软件中一个上周刚修补的高严重性认证绕过漏洞,目前正被威胁攻击者积极利用,以获得受影响防火墙系统的root级别访问权限。该漏洞被追踪为CVE-2025-0108,允许未经认证的攻击者通过网络访问PAN-OS管理网页界面,绕过认证要求。漏洞的严重性评分为CVSS 8.8(满分10分),但仅当允许从互联网上的外部IP地址访问管理网页界面时成立。如果将该访问限制在指定的IP地址,评分则会显著降至5.9,成为一种有效的变通措施。
10、Windows磁盘清理工具漏洞被利用获取系统权限
https://www.anquanke.com/post/id/304552 微软在 2025 年 2 月的 “周二补丁日” 中,修复了 Windows 磁盘清理工具(cleanmgr.exe)存在的一个漏洞。该漏洞编号为 CVE-2025-21420,攻击者可利用此漏洞在存在漏洞的系统上获取 SYSTEM 权限。这个漏洞的通用漏洞评分系统(CVSS)评分为 7.8,给 Windows 用户带来了重大风险。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
Mongoose 搜索注入漏洞分析
漏洞简介
CVE-2024-53900 Mongoose 8.8.3、7.8.3 和 6.13.5 之前的版本容易受到 $where 运算符不当使用的影响。此漏洞源于 $where 子句能够在 MongoDB 查询中执行任意 JavaScript 代码,这可能导致代码注入攻击以及未经授权的数据库数据访问或操纵。
CVE-2025-23061 Mongoose 8.9.5、7.8.4 和 6.13.6 之前的版本容易受到 $where 运算符不当使用的影响。此漏洞源于 $where 子句能够在 MongoDB 查询中执行任意 JavaScript 代码,可能导致代码注入攻击以及未经授权的数据库数据访问或操纵。该问题的存在是因为CVE-2024-53900的修复不完整。
Mongoose 是一个用于 Node.js 的 MongoDB 对象建模工具,它使得与 MongoDB 数据库交互变得更加简单和高效。我们可以看到这两个漏洞描述大体相同,都是因为在使用 $where 运算符时出现了问题。
环境搭建
安装 MongoDB 不知道是不是本地环境的问题,错误百出,于是还是采用 docker 来安装 docker pull mongo docker run --name mongodb -d -p 27017:27017 mongo
快速创建一个项目并指定 mongoose 版本
npm init -y
npm install mongoose@6.13.4 --save
node test.js
漏洞复现
根据漏洞特点我编写了一个 js 脚本,在不同版本下执行,比较不同情况对应的结果
const mongoose = require("mongoose");
// 连接 MongoDB
const MONGO_URI = "mongodb://localhost:27017/testdb";
async function testWhereInjection() {
await mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
// 定义 User 模型和 Post 模型
const UserSchema = new mongoose.Schema({
username: String,
isAdmin: Boolean,
password: String
});
const PostSchema = new mongoose.Schema({
title: String,
content: String,
author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});
const User = mongoose.model("User", UserSchema);
const Post = mongoose.model("Post", PostSchema);
// 插入测试数据
await User.deleteMany({});
await Post.deleteMany({});
const users = await User.insertMany([
{ username: "admin", isAdmin: true, password: "admin123" },
{ username: "user1", isAdmin: false, password: "user123" },
{ username: "user2", isAdmin: false, password: "user456" }
]);
await Post.insertMany([
{ title: "Post 1", content: "Content 1", author: users[0]._id },
{ title: "Post 2", content: "Content 2", author: users[1]._id }
]);
console.log("√ 已插入测试数据");
// 1. 正常的 populate 查询
try {
const result = await Post.findOne().populate({
path: 'author',
match: { username: "admin" }
});
console.log("√ 正常 populate 查询结果:", result);
} catch (err) {
console.error("× 正常 populate 查询失败:", err.message);
}
// 2. 测试 populate match 中的 $where 注入
try {
const result = await Post.findOne().populate({
path: 'author',
match: { $where: "this.isAdmin" } // 修改这里,去掉 return
});
console.log("√ `$where` populate 查询成功,说明可能存在漏洞:", result);
} catch (err) {
console.error("× `$where` populate 查询被拦截:", err.message);
}
// 3. 测试深层嵌套的 $where 注入
try {
const result = await Post.findOne().populate({
path: 'author',
match: {
$and: [
{ nested: { $where: "this.isAdmin" } } // 修改这里,去掉 return
]
}
});
console.log("√ 嵌套 `$where` populate 查询成功,说明可能存在漏洞:", result);
} catch (err) {
console.error("× 嵌套 `$where` populate 查询被拦截:", err.message);
}
// 4. 测试数组中的 $where 注入
try {
const result = await Post.findOne().populate({
path: 'author',
match: [{ $where: "this.isAdmin" }] // 修改这里,去掉 return
});
console.log("√ 数组中的 `$where` populate 查询成功,说明可能存在漏洞:", result);
} catch (err) {
console.error("× 数组中的 `$where` populate 查询被拦截:", err.message);
}
await mongoose.disconnect();
}
testWhereInjection().catch(console.error);
mongoose@6.13.4
mongoose@6.13.5
mongoose@6.13.6
通过执行结果我们发现,在 mongoose@6.13.4 中,$where 语句可以任意执行语句,经过修复后的 mongoose@6.13.5 中,只能通过嵌套来执行插入的语句,mongoose@6.13.6 已经修复了通过嵌套执行插入语句的问题。
漏洞分析
https://github.com/Automattic/mongoose/compare/6.13.4...6.13.5?diff=split&w=& 第一次进行修复
1. 首先判断 match 是否为一个数组,使用 Array.isArray(match) 进行检查。
2. 如果 match 是一个数组,则使用 for...of 循环遍历数组中的每个元素 item。
3. 对于每个 item,进行以下检查:
如果 item 不为 null (item !\= null),并且 item 对象中存在 $where 属性 (item.$where),则抛出一个 MongooseError 异常,错误信息为 "Cannot use $where filter with populate() match"。这是因为在 populate() 查询中不允许使用 $where 操作符。
4. 如果 match 不是一个数组,则进行另一个判断:
如果 match 不为 null (match !\= null),并且 match 对象中存在 $where 属性 (match.$where !\= null),同样抛出一个 MongooseError 异常,错误信息为 "Cannot use $where filter with populate() match"。
进行 populate() 查询时,防止使用 $where 操作符,检查传入的 match 参数是否包含 $where 属性,无论 match 是一个数组还是一个对象。如果发现 match 中存在 $where 属性,就会抛出一个 MongooseError 异常,提示不能在 populate() 查询中使用 $where 过滤器
https://github.com/Automattic/mongoose/compare/6.13.5...6.13.6?diff=split&w=& 第二次修复
1. 函数接受一个参数 match,表示要检查的对象。
2. 首先进行两个条件判断:
如果 match 为 null 或 undefined,直接返回,不进行后续检查。
如果 match 的类型不是对象,也直接返回,不进行后续检查。 这两个判断是为了避免对非对象类型进行遍历和递归。
3. 使用 Object.keys(match) 获取 match 对象的所有属性键,并使用 for...of 循环遍历每个属性键 key。
4. 对于每个属性键 key,进行以下检查:
如果 key 等于 '$where',表示在 match 对象中发现了 $where 操作符,抛出一个 MongooseError 异常,错误信息为 "Cannot use $where filter with populate() match"。
5. 如果当前属性的值 match[key] 不为 null 或 undefined,并且其类型为对象,则递归调用 throwOn$where 函数,将 match[key] 作为参数传入,对嵌套的对象进行相同的检查。
通过递归调用 throwOn$where 函数,可以对 match 对象进行深度遍历,检查其中是否包含 $where 操作符,无论 $where 操作符位于对象的哪个层级。
网络安全日报 2025年02月20日
1、新型恶意软件FrigidStealer发起网络注入攻击
https://www.proofpoint.com/us/blog/threat-insight/update-fake-updates-two-new-actors-and-new-mac-malware 安全研究团队发布报告,揭示了两种新型网络犯罪组织(TA2726和TA2727)以及针对Mac用户的新型恶意软件FrigidStealer。TA2726和TA2727通过网络注入活动传播恶意软件,利用虚假更新诱饵诱导用户下载恶意程序。FrigidStealer是一种信息窃取程序,能够窃取用户数据并绕过安全检测。此外,网络注入活动的规模不断扩大,攻击者通过流量分发服务(TDS)将用户重定向
2、廉价信息窃取器Infostealer威胁美国关键安全系统
https://www.infostealers.com/article/infostealing-malware-infections-in-the-u-s-military-defense-sector-a-cybersecurity-disaster-in-the-making/ 美国军方及其主要国防承包商,包括洛克希德马丁、波音和霍尼韦尔等机构,受到廉价的Infostealer恶意软件感染。恶意软件通过员工点击恶意链接或下载受感染文件窃取信息,导致VPN凭证、会话Cookie、机密文件以及多因素身份验证数据的泄露。甚至连FBI和政府问责局(GAO)的设备也受到感染。黑客在暗网上以每台
3、Juniper网络发布安全更新修复智能路由器高危漏洞
https://thehackernews.com/2025/02/juniper-session-smart-routers.html 瞻博网络(Juniper Networks)于2025年2月18日发布安全更新,修复了会话智能路由器、会话智能导体和WAN保证路由器中的高危漏洞(CVE-2025-21589)。该漏洞CVSS v3.1评分为9.8,攻击者可利用其绕过身份验证并获取设备管理权限。漏洞影响多个版本,但目前尚未发现恶意利用案例。相关产品用户应尽快升级至修复版本,以确保安全。
4、施乐打印机漏洞可能导致凭据泄露
https://thehackernews.com/2025/02/new-xerox-printer-flaws-could-let.html 安全研究员揭示了施乐VersaLink C7025多功能打印机中的两个高危漏洞,这些漏洞可能被攻击者利用以获取Windows Active Directory凭据。通过回传攻击,攻击者可以重定向身份验证信息或修改SMB/FTP服务器配置,从而窃取敏感数据。尽管攻击需要一定的访问权限,但成功利用漏洞可能导致组织内部网络的广泛破坏,施乐已发布固件更新以修复漏洞。
5、风险投资巨头Insight Partners遭遇网络攻击
https://www.bleepingcomputer.com/news/security/venture-capital-giant-insight-partners-hit-by-cyberattack/ 总部位于纽约的风险投资和私募股权公司Insight Partners披露,其系统在1月16日遭受了一次复杂的社会工程攻击。该公司管理超过900亿美元的资产,并在全球范围内投资了800多家软件和技术初创企业。攻击发生后,Insight Partners立即通知了执法部门,并聘请第三方网络安全专家展开调查。公司表示,攻击者在被发现后已被阻止,且没有证据表明攻击者仍能访问其网络。
6、网络犯罪转向社交媒体,攻击量达历史新高
https://www.helpnetsecurity.com/2025/02/18/cybercriminals-social-media-attacks/ 最新报告显示,2024年在线威胁急剧增加,创下历史新高。仅在10月至12月期间,就拦截了25.5亿次网络威胁,平均每秒高达321次。
7、OpenSSH曝高危漏洞,可引发中间人攻击与DoS攻击
https://www.csoonline.com/article/3827268/openssh-fixes-two-flaws-that-enable-a-man-in-the-middle-attack-and-denial-of-service.html OpenSSH是远程管理Linux和BSD系统的最常用工具,近期修复了两个高危漏洞。其中一个漏洞允许攻击者在特定配置下对OpenSSH客户端发起中间人攻击,冒充服务器以拦截敏感通信;另一个漏洞则可能导致CPU资源耗尽。
8、大规模StaryDobry攻击:伪装游戏安装程序植入挖矿木马
https://thehackernews.com/2025/02/trojanized-game-installers-deploy.html 近期,攻击者通过伪造热门游戏的安装程序,诱骗用户下载并在受感染的Windows主机上植入加密货币挖矿木马。
9、CISA 警告Palo Alto PAN-OS漏洞正在被积极利用
https://www.freebuf.com/news/422206.html 近期,美国网络安全与基础设施安全局(CISA)发布了一则紧急警报,矛头直指帕洛阿尔托网络公司(Palo Alto Networks)防火墙设备所搭载的操作系统 PAN-OS。该系统现正遭受黑客攻击,其存在的一个高严重性身份验证绕过漏洞(CVE-2025-0108)已被黑客们积极利用。
10、勒索风暴来袭!360预警:超500家政企机构惨遭攻击
https://www.anquanke.com/post/id/304514 新年伊始,一场前所未有的勒索病毒风暴却悄然开始席卷各行各业。近期,360数字安全集团基于360安全大模型的全面赋能,监测到共有522个政企机构遭遇勒索攻击;同时,双重或多重勒索模式正逐渐盛行,这一趋势显著加剧了数据泄露的风险,给众多政企机构带来了前所未有的挑战与危机。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年02月19日
1、新型Golang后门利用Telegram作为C2通信渠道
https://www.netskope.com/blog/telegram-abused-as-c2-channel-for-new-golang-backdoor 安全研究人员发现了一种新型Golang后门恶意软件,该软件利用Telegram作为其C2通信渠道。尽管该恶意软件似乎仍在开发中,但已具备完整的功能,能够执行多种恶意活动。恶意软件通过Telegram接收命令并执行,如执行PowerShell命令、重新启动自身、截屏(未完全实现)以及自毁。这种利用云应用作为C2通道的方式,使得攻击者能够轻松绕过传统检测机制,同时增加了防御的复杂性。
2、研究人员发现XCSSET macOS恶意软件新变种
https://thehackernews.com/2025/02/microsoft-uncovers-new-xcsset-macos.html 安全研究人员发现了一种名为XCSSET的macOS恶意软件新变种。这是自2022年以来首次重大更新,该变种具备增强的混淆方法、更新的持久性机制和新的感染策略。XCSSET通过感染Apple Xcode项目传播,能够窃取数字钱包、系统信息和文件,并利用透明度、同意和控制(TCC)框架绕过漏洞,截取桌面截图。此次更新还通过下载已签名的dockutil工具,确保恶意软件在每次启动时自动运行。
3、微软修复Azure AI服务和Microsoft账户关键漏洞
https://cyble.com/blog/cve-2025-21415-microsoft-critical-security-risks 微软近日修复了两个关键安全漏洞——CVE-2025-21415和CVE-2025-21396,分别涉及Azure AI人脸服务和Microsoft账户。其中,CVE-2025-21415的CVSS评分为9.9,属于高危的欺骗性身份验证绕过漏洞,攻击者可利用该漏洞远程提升权限,威胁系统机密性和完整性。另一个漏洞CVE-2025-21396的CVSS评分为7.5,源于Microsoft账户中缺少授权检查,可能导致未经授权的权限提升。
4、PHP高危漏洞可导致SQL注入风险
https://securityonline.info/cve-2022-31631-cvss-9-1-critical-php-flaw-exposes-websites-to-sql-injection-attacks/ PHP中发现了一个严重漏洞(CVE-2022-31631),该漏洞的CVSS评分高达9.1,可能导致SQL注入攻击。漏洞影响多个版本的PHP,包括8.0.x(8.0.27之前)、8.1.x(8.1.15之前)和8.2.x(8.2.2之前),主要存在于PDO::quote()函数中。这个漏洞源于整数溢出,导致在处理过长字符串时,PDO::quote()无法正确转义输入,从
5、ChatGPT Operator 遭提示注入攻击,泄露用户隐私数据
https://www.freebuf.com/vuls/422119.html OpenAI 为 ChatGPT Pro 用户打造的前沿研究预览工具 ChatGPT Operator,近来因一个严重漏洞引发关注。该漏洞可通过提示注入攻击,致使敏感个人数据面临泄露风险。
6、安卓新安全功能:通话期间禁止修改敏感设置
https://www.freebuf.com/articles/system/422015.html 谷歌在安卓 16 Beta 2 中推出了一项突破性的安全功能,旨在通过阻止用户在通话期间修改敏感设置来打击电话诈骗。这项功能目前在测试版中上线,可阻止用户启用侧载应用和授予辅助功能权限等设置,而这两者常被诈骗者利用。
7、黑客滥用Microsoft Teams会议邀请窃取用户权限
https://www.freebuf.com/articles/es/422001.html 在一次复杂的网络攻击活动中,代号为Storm-2372的黑客利用Microsoft Teams会议邀请实施“设备代码钓鱼”攻击。自2024年8月以来,该攻击活动已针对欧洲、北美、非洲和中东的政府、非政府组织、IT服务、国防、电信、医疗、教育和能源等领域。微软威胁情报中心(MSTIC)认为,Storm-2372与俄罗斯的利益和手法高度吻合,评估为中等可信度。
8、仿冒 DeepSeek 官方 App 的手机木马病毒被捕获
https://www.ithome.com/0/831/452.htm 近日,国家计算机病毒应急处理中心和计算机病毒防治技术国家工程实验室依托国家计算机病毒协同分析平台,在我国境内捕获发现针对我国用户的仿冒我国国产人工智能大模型“DeepSeek”官方 App 的安卓平台手机木马病毒。
9、微软推出修复华硕蓝屏问题的 BIOS 更新
https://www.anquanke.com/post/id/304455 在安装了一个 BIOS 更新后,更多华硕(ASUS)用户现在可以安装 Windows 11 24H2 系统了,该 BIOS 更新解决了十月份所确认的蓝屏死机(BSOD)问题。
10、AMD 多款嵌入式处理器现安全隐患,官方建议升级固件防范
https://www.anquanke.com/post/id/304437 美国超微半导体公司(AMD)已发布安全更新,以修复其霄龙(EPYC)和锐龙(Ryzen)嵌入式处理器中的多个漏洞,其中一些漏洞可能导致任意代码执行、内存损坏或权限提升。最严重的漏洞的通用漏洞评分系统(CVSS)评分为 7.5 分(高危),并影响到各种系统管理模式(SMM)、安全加密虚拟化(SEV)以及固件组件。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
pocsuite3安全工具源码分析
pocsuite3 是由 知道创宇 404实验室 开发维护的开源远程漏洞测试和概念验证开发框架。为了更好理解其运行逻辑,本文将从源码角度分析该项目的初始化,多线程函数,poc模板等等源码。
项目结构
api:对要导入的包重命名,方便后续导入调用data:存储用户需要使用的文档数据lib:项目核心代码modules:存储用户自定义的模块plugins:存储用户自定义的插件pocs:存储poc文件shellcodes:存储生成php,java,python等脚本语言的利用代码,以及反弹shell的利用代码cli.py:项目的入口console.py:命令行界面
进入项目入口:/pocsuite3/cli.py
check_environment() #检查当前工作目录是否符合当前系统set_paths(). #设置后续需要用到的数据,目录信息banner() #打印命令行页面的横幅
init_options(cmd_line_parser().dict) # 命令行参数处理跟进cmd_line_parser()查看:
此处注意一个参数-c
target.add_argument("-c", dest="configFile", help="Load options
from a configuration INI file")
可以先在pocsuite.ini配置好参数,通过pocsuite -c pocsuite.ini 运行
双重跟进init_options(),找到命令行存储参数:
可见采用了类似字典的形式存储,避免了重复数据且还有其它四个参数也采用了该形式存储,五个参数贯穿整个项目
conf:存储基本配置信息kb:存储了目标地址、加载的PoC、运行模式、输出结果、加载的PoC文件地址、多线程信息等cmd_line_options:是存储命令行输入的参数值merged_options:存储输入值与默认值合并后的结果paths:存储数据、插件、poc等目录地址
参数获取处理完后,进入项目初始化,init()函数,一下对部分函数进行注解分析:
def init():
"""
Set attributes into both configuration and knowledge base singletons
based upon command line and configuration file options.
"""
set_verbosity() #日志输出级别设置
_adjust_logging_formatter() #调整日志格式器
_cleanup_options() #将各个配置项格式化,并校验合法性
_basic_option_validation() #校验seebug,zoomeye等api,token的合法性
_create_directory() #检测文件路径是否存在,不存在则创建
_init_kb_comparison()
update()
_set_multiple_targets() #读取目标
_set_user_pocs_path()
_set_pocs_modules() #动态加载poc
_set_plugins() #动态加载插件
_init_targets_plugins()
_init_pocs_plugins()
_set_task_queue() #初始化多线程设置
_init_results_plugins() #初始化输出插件
AttribDict类解析
前文也提到过以下五个全局变量,它们均通过创建AttribDict类的实例进行使用,现在我们跟进类详细分析:
AttribDict()类:
自定义类,继承自python内建的OrderedDict类,扩展访问方式,简化了对字典键的访问。主要存在三个方法:getattr(),setattr(),delattr()这三个方法在if判断逻辑均相同:1:以双下划线 __ 开头(例如,Python 的内置属性,如 dict)。2:以 _OrderedDict__ 开头(因为 OrderedDict在内部实现中使用的名称)。3:名字存在于 exclude_keys 集合中(排除的键)。如果任一条件成立,说明这个属性不应该通过 obj.attr访问,所以跳过使用自定义的 getattr处理,直接调用父类对应的方法访问。例:getattr()就调
如果属性名不满足,则通过字典的方式,添加或者删除AttribDict中
地址处理代码分析
先查看存储初始数据,存在则进行下一步。通过set()创建集合方便去重,再遍历conf.url数据,通过parde_target()进行对url进行分析处理,并且在不为空的情况下调用集合的add()方法添加,完成后再将,用于临时存储的target集合里面的数据,放到kb这种全局变量内。parde_target()函数
接受参数后先if判断,如果是域名,url,ip:端口形式则直接赋值给target跟进其中一个判断函数:
跟进:
可见是通过正则进行判断。接着再判断如果为http://ipv6形式,则启动ipv6配置,并进行赋值target,依旧是正则判断。
再判断如果为ipv4则调用python内置ip_address解析赋值,该方法自动区分ipv4或者ipv6并最后返回对应的对象。再通过else判断,对纯ipv6地址,或者ipv6网络进行解析赋值。
动态poc加载
Step1:从pocs目录加载先通过os.listdir读取对应目录,返回一个含有poc的py文件的列表。再通过filter()函数过滤init.之类文件,不过此时filter()函数返回的是一个迭代器,所以又通过list()函数将数据处理成列表再赋值。(lambda x: x not in ['init.py','init.pyc']:这个匿名函数会检查每个文件名 x 是否不等于'init.py' 或 'init.pyc'。)
再从含有类似thinkphp_poc.py的文件名中,通过x变量循环读取,并通过splitex()函数将其分为"thinkphp_poc",".py"格式的键值队元组。再次通过dict()字典函数,将x元组的第一个元素作为字典的键,第二个元素作为字典的值。
如果poc是目录,则使用 os.walk() 递归遍历该目录下的所有文件,过滤出 .py或 .yaml 文件,并将其完整路径添加到 _pocs 列表中。
Step2:遍历加载 PoC 文件内容并检查,并对加载失败的poc进行日志记录。
Step3:最后从 Seebug 网站加载 PoC。
poc模版跟据目录找到现存poc:pocsuite3/pocs,thinkphp_rce为例
所有模版均是继承自父类POCBase,跟进:
父类在初始化时便设置了一系列可能用到的属性,例如自定义headers,目标url,端口等等。这里关注execute()函数
self.url处采用if判断:如果为http协议则采用parse_target_url()解析,else采用build_url()解析:mode值默认为verify。随后调用_execute()根据mode值执行。
shell(),attack(),_verify()均需自定义重写。回到例thinkphp_rce例子:_verify()函数如下:
调用了_check()函数进行检验:
通过request.post()发送设置好payload的请求,根据返回包关键字判断是否成功。(flag自定义)返回的结果在_verify()函数又会调用parse_output()转化为json格式输出。
动态核心load_file_to_module()继续分析_set_pocs_modules()
将读取文件切割为文件名和后缀名,根据后缀名重构路径file_pth,if判断file_path构建成功则进入红框代码处。
通过get_filename()从file_path路径提取文件名,由于wuth.ext=False,则不提取文件名后缀,提取后拼接在pocs_后并赋值给module,例如:pocs_thinkphp_rce。随后三行代码涉及到python中动态模块加载知识:
spec = importlib.util.spec_from_file_location(module_name, file_path,
loader=PocLoader(module_name, file_path))
#创建模块规格,采用自定义加载器类加载模块,loader:加载器对象,负责如何从文件加载模块
mod = importlib.util.module_from_spec(spec)#根据规格创建模块对象
spec.loader.exec_module(mod) #执行模块代码,确保为完整可用的模块
动态模块注解:
模块是包含 Python 代码的文件,可以通过 import语句加载并使用。通常,当你使用 import 语句导入一个模块时,Python会根据模块的名称查找相应的文件(如 .py 文件),并将其加载到内存中。
然而,在一些特殊的情况下,比如动态加载模块或运行时创建模块,我们需要用到importlib 模块。importlib提供了一些工具,可以帮助我们在运行时加载模块,而不是在编写代码时静态地导入。
例如:importlib.util.spec_from_file_location
spec(模块加载规格)描述了如何加载一个模块。它定义了如何找到模块代码,如何加载它,以及加载时需要的一些元数据。类似于说明书,它告诉Python 模块在哪里、叫什么名字、以及如何加载它。
接着看看是如何调用loader加载器的exec_module()函数进行加载的:
filename接受poc绝对路径,poc_code接受poc文件内容。随后调用check_requires()检查代码运行中需要的包,通过import函数导入。compile()为python内置函数,将源代码字符串poc_code编译为字节码,'exec'这是一个编译模式,表示代码将作为一段可执行的代码被执行。常见的编译模式有'eval'(用于单个表达式)和 'exec'(用于整个代码块)之后再调用exec()函数执行字节码对象obj当中的代码,并绑定到module.dict上,这样就可以通过module.函数()直接调用poc_code当中的函数。
多线程与输出加载
跟进:_set_task_queue()
if判断,poc模版与目标ip均不为空情况下,遍历出poc_module与target。并将它们组成元组,加入kb.task_queue中,确保数据在线程安全传输。
start()函数
调用runtime_check()检查poc是否加载成功:
再调用python标准库中的queue.Queue类的qsize()方法,获取先前kb.task_queue队列的任务数量。run_threads()函数随后进入start()函数核心:run_threads(conf.threads, task_run):该函数传入线程数conf.threads(),与多线程执行函数task_run()。
这个函数的目的是启动多个线程并执行给定的函数thread_function。num_threads: 需要启动的线程数量。thread_function: 要在线程中运行的目标函数。args: 传递给 thread_function 的参数,默认为空元组。forward_exception: 控制是否在捕获异常后继续传播异常,默认值为 True。start_msg: 控制是否输出启动线程的消息,默认值为 True。
先threads = []创建空列表,用来存储后续的线程实例
随后进行线程数检查,如果大于1,则是多线程,并在线程数超过max时发出告警提示,线程不大于1,则直接执行函数
检查完为多线程则进行下一步:循环创建线程,并启动
根据num_threads数量循环创建,并调用setDaemon(TRUE)将所有线程设置为守护线程。(守护线程:后台运行,随主线程终止而终止)
随后再调用python标准库函数isAlive()进行循环检查,直到所有线程完成才跳出循环。(python3建议使用is_Alive()函数)。
执行完run_threads()函数后,finally代码再执行task_done(),跟进该函数,内部存在三个函数:
show_task_result():会取出poc执行结果,然后格式化输出
result_plugins_start():该函数负责调用file_record.py中的start()函数
result_compare_handle():显示来自各个搜索引擎的对比数据
先前已经分析了start(0函数核心在于run_threads(conf.threads,task_run),我们接着跟进分析多线程执行函数:task_run()
多线程执行函数:
task_run():
先确认task_queue不为空,并且thread_continue为真,随后从task_queue获取目标ip与poc模版
(之前通过task_queue.put((target,poc_module))存储进去的)
随后调用python标准库copy模块中的deepcpy,进行深拷贝操作,复制poc模版,防止原始poc模块被修改。
poc_name获取poc模块名称方便日志打印。
随后处理用户自定义参数,检查是否尝试修改白名单内容,并校验是否存在必选参数未设置。
随后进入核心代码块,根据传参调用excute()函数:
后续则是根据测试成功或者失败,对结果进行处理输出
综合文章分析,pocsuite3项目被我分成如下执行流程:
在clip.py中调用main()函数,整个项目则开始执行,进行环境检查,参数获取后,则进入核心代码:在main()函数中调用init()与start()函数,最后则是我上文刚分析过的数据处理与输出格式化。
网络安全日报 2025年02月18日
1、黑客利用修改版SharpHide工具创建隐藏注册表
https://medium.com/@andrew.petrus/exposing-hidden-malware-persistence-created-by-sharphide-4d3c784319f0 网络安全研究发现,黑客通过修改后的SharpHide工具开发了一种隐蔽的恶意软件持久性技术。此技术利用Windows注册表重定向功能,通过在注册表路径前添加空字符,创建隐藏的Run键值。此外,在64位系统中,恶意软件通过WOW6432Node注册表重定向路径增加隐蔽性,常见工具如Autoruns无法检测。为应对此威胁,研究员开发了SharpDelete工具,专门用于检测并删除这些隐藏的注
2、新型恶意软件Btmob RAT通过钓鱼网站传播
https://thecyberexpress.com/btmob-rat/ Btmob RAT是一种新发现的高级Android恶意软件,由早期的SpySolr演变而来,具有远程控制、凭据窃取和数据泄露等多种恶意功能。该恶意软件通过伪装成流行流媒体平台(如iNat TV)和虚假加密货币挖矿网站的钓鱼网站传播。一旦安装,Btmob RAT会利用Android的辅助功能服务,通过WebSocket与命令与控制(C2)服务器通信,实时执行命令并窃取敏感数据。
3、恶意软件FinalDraft滥用Outlook进行秘密通信
https://www.elastic.co/security-labs/finaldraft 研究人员在调查REF7707时发现针对外交部的新型恶意软件家族“FINALDRAFT”,该恶意软件主要针对南美某国的外交部,利用Microsoft Graph API通过Outlook邮件草稿进行秘密通信。FinalDraft支持37种命令,包括数据窃取、进程注入、网络代理和文件操作等。其通信方式隐蔽,通过Outlook草稿发送和接收命令,避免检测。研究人员建议通过监控Microsoft Graph API的使用情况和部署高级端点安全解决方案来防御此类威胁。
4、谷歌双重漏洞致YouTube用户Gmail地址泄露
https://www.theregister.com/2025/02/17/infosec_news_in_brief/ 安全研究人员发现谷歌存在两个漏洞,通过这些漏洞,攻击者可以利用YouTube用户ID获取其Gmail地址。研究人员通过分析Google的People API和Pixel Recorder应用,发现了一个可以将Gaia ID解析为电子邮件地址的漏洞。通过技术手段,研究人员成功绕过了通知机制,从而在不触发警报的情况下暴露目标用户的电子邮件地址。谷歌随后修复了相关缺陷,并向研究人员支付了总计10633美元的赏金。
5、勒索软件XELERA伪装招聘信息攻击印度求职者
https://www.seqrite.com/blog/xelera-ransomware-fake-fci-job-offers/ 安全团队近期发现一种名为XELERA的勒索软件通过伪装成印度食品公司(FCI)的虚假招聘信息,针对求职者发起攻击。攻击者利用恶意Word文档作为诱饵,文档中嵌入恶意代码,通过多阶段感染链部署勒索软件。该软件不仅加密受害者文件,还利用Discord机器人窃取数据、干扰系统,并最终显示勒索信息。目前,该攻击正在积极传播,对求职者构成严重威胁。
6、SonicWall防火墙认证绕过漏洞正遭大规模利用
https://www.freebuf.com/vuls/421945.html 网络安全公司警告称,SonicWall防火墙中存在的一个严重认证绕过漏洞正在被积极利用,该漏洞编号为CVE-2024-53704 。2025年2月10日,随着Bishop Fox的研究人员公开发布了概念验证(PoC)漏洞利用代码,未修补设备组织面临的风险大大增加。
7、《个人信息保护合规审计管理办法》5月起施行
https://www.thepaper.cn/newsDetail_forward_30158314 近日,国家互联网信息办公室公布《个人信息保护合规审计管理办法》,自2025年5月1日起施行。《办法》对合规审计活动的开展、合规审计机构的选择、合规审计的频次、个人信息处理者和专业机构在合规审计中的义务等作出细化规定,旨在为个人信息处理者开展个人信息保护合规审计提供系统性、针对性、可操作性的规范,提升个人信息处理活动合法合规水平,保护个人信息权益。
8、"杀猪盘"诈骗猖獗:2024年成加密货币诈骗新高
https://www.helpnetsecurity.com/2025/02/14/pig-butchering-scams-fraud-growth/ 据Chainalysis最新报告,2024年成为诈骗分子的“丰收年”,他们通过非法活动至少攫取了99亿美元加密货币收入。随着持续分析揭示更多欺诈行为,这一数字有望飙升至24亿的历史新高。
9、苹果macOS内核现防护漏洞,3秒就可能被攻破
https://cybersecuritynews.com/kaslr-exploited-apple-silicon/ 韩国大学的安全研究人员发现了一个新漏洞“SysBumps” ,针对搭载 Apple Silicon 处理器的 macOS 系统,能够绕过内核地址空间布局随机化(KASLR)机制。
10、新型设备码钓鱼攻击:利用设备认证窃取身份令牌
https://cybersecuritynews.com/new-device-code-phishing-attack-exploit-device-code-authentication/ 微软威胁情报团队发现,一种名为“设备码钓鱼”的复杂网络钓鱼活动,正被用于窃取用户身份认证令牌。这种攻击手段被一个名为 Storm-2372 的黑客组织所使用,自2024年8月以来,该组织一直活跃,目标是全球多个行业和政府机构。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年02月17日
1、研究人员披露whoAMI云镜像名称混淆攻击
https://securitylabs.datadoghq.com/articles/whoami-a-cloud-image-name-confusion-attack/ 研究人员披露了一种名为“whoAMI”的云镜像名称混淆攻击,该攻击利用AWS用户在检索AMI时的配置错误,可能导致恶意代码在目标账户中执行。攻击者通过发布与官方AMI名称类似的恶意AMI,并利用用户在检索时未指定AMI所有者的漏洞,诱使目标系统使用恶意镜像。AWS已通过推出“允许的AMI”功能来应对此类攻击,同时研究人员开发了whoAMI-scanner工具,帮助用户检测环境中是否存在未经授权的AMI使用情况。
2、黑客滥用Webflow CAPTCHA技术开展新型网络钓鱼
https://www.netskope.com/blog/new-phishing-campaign-abuses-webflow-seo-and-fake-captchas 研究人员正在追踪一起大规模网络钓鱼活动,攻击者通过滥用Webflow CDN托管的恶意PDF文件,利用搜索引擎优化(SEO)技术将受害者引导至嵌有伪造CAPTCHA图像的钓鱼页面,诱骗受害者输入个人信息和信用卡详情。受害者主要分布于北美、亚洲和南欧地区,目标行业包括科技、制造和银行业。攻击者的策略使钓鱼页面能规避静态扫描检测,最终窃取受害者的财务和个人信息。
3、黑客泄露1200万Zacks Investment用户账户数据
https://www.bleepingcomputer.com/news/security/hacker-leaks-account-data-of-12-million-zacks-investment-users/ 近日,黑客在论坛声称已于2024年6月成功入侵Zacks Investment Research(Zacks),泄露了约1200万用户的数据。泄露信息包括用户的全名、电子邮件地址、用户名、实际地址、电话号码及SHA-256哈希形式的密码等。黑客通过域管理员权限访问Zacks的活动目录,并窃取主网站及16个相关站点的源代码。Zacks尚未就此次事件发布声明。如被确认,这将是四
4、荷兰警方查获127台XHost服务器
https://www.bleepingcomputer.com/news/legal/dutch-police-seizes-127-xhost-servers-dismantles-bulletproof-hoster/ 荷兰警方于近日查获127台服务器,成功摧毁了防弹托管服务商ZServers/XHost的运营网络。该托管商被指控为网络犯罪提供支持,包括协助LockBit勒索软件攻击、分发恶意软件以及支持洗钱等活动。此次行动是国际合作的一部分,美国、澳大利亚和英国当局此前已对该防弹托管商实施制裁。
5、CL0P勒索组织利用Cleo漏洞扩大攻击范围
https://www.cyfirma.com/research/cl0p-ransomware-latest-attacks/ 近日安全人员发现Cl0p勒索组织通过利用Cleo漏洞(CVE-2024-50623)扩大其攻击范围,已公布43个受害组织的名单,涉及制造业、零售业和运输业,该漏洞允许攻击者执行远程代码并窃取敏感数据。CL0P与俄罗斯网络犯罪集团TA505关系密切,显示其具备长时间隐匿及高效攻击能力。安全人员建议企业升级安全补丁、优化网络钓鱼防御,并通过YARA规则和IoC监控增强威胁检测能力,以遏制此类攻击风险。
6、Palo Alto 修复PAN-OS身份验证绕过漏洞
https://securityadvisories.paloaltonetworks.com/CVE-2025-0108 Palo Alto Networks修复了其PAN-OS软件中的一个高危身份验证绕过漏洞(CVE-2025-0108),该漏洞CVSS评分为7.8。攻击者可利用此漏洞绕过身份验证,访问管理Web界面并调用某些PHP脚本,从而获取敏感数据。受影响版本包括PAN-OS 10.1至11.2的多个版本,官方已发布更新修复该漏洞。
7、黑客利用智能合约漏洞盗取价值950万美元以太币
https://www.bleepingcomputer.com/news/cryptocurrency/zklend-loses-95m-in-crypto-heist-asks-hacker-to-return-90-percent/ 去中心化放贷平台zkLend近日遭遇智能合约攻击,黑客利用其智能合约中mint()函数的舍入误差漏洞,窃取了约3600个以太币(价值约950万美元)。zkLend迅速发出警告,向黑客提议归还被盗资金的90%(3,300 ETH),允许其保留10%作为白帽赏金,且免除相关责任。如果黑客未归还资金,zkLend将采取进一步法律行动。
8、Lazarus组织利用Marstech1植入程序发起供应链攻击
https://thehackernews.com/2025/02/lazarus-group-deploys-marstech1.html 朝鲜黑客组织Lazarus Group近期通过名为“Marstech1”的JavaScript植入程序,针对开发人员发起了供应链攻击。该恶意程序通过托管在GitHub的开源存储库传播,最早在2024年12月被发现,目标包括MetaMask等加密货币钱包。攻击范围涵盖美国、欧洲和亚洲,共造成至少233名受害者。
9、WinZip披露可致远程代码执行高危漏洞
https://securityonline.info/cve-2025-1240-winzip-vulnerability-opens-door-to-remote-code-execution/ WinZip近日披露一个严重的远程代码执行漏洞(CVE-2025-1240)。该漏洞存在于WinZip解析7Z文件的过程中,由于对用户提供的数据验证不足,可能导致内存中的越界写入。该漏洞的CVSS评分为7.8,影响WinZip 28.0及更早版本。WinZip修复了该漏洞,并建议用户立即升级至最新版本以规避风险。
10、Doxbin平台遭黑客组织Tooda攻击致数据泄露
https://hackread.com/doxbin-data-breach-hackers-leak-user-records-blacklist-file/ Doxbin平台因遭到黑客组织Tooda的攻击而发生数据泄露事件。Tooda在其官方网站和Telegram频道上声称,他们破坏了Doxbin的基础设施,删除了用户账户,锁定了管理员,并泄露了包含136814名用户ID、用户名和电子邮件地址的数据库。此外,攻击者还曝光了一个名为“Doxbin黑名单”的文件,其中记录了那些曾付费阻止其信息出现在Doxbin上的人员。Tooda还公布了Doxbin管理员的个人信息,并指控其滥用职权,引发
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
第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页 第212页 第213页 第214页 第215页 第216页 第217页 第218页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

