ApoorvCTF Rust语言逆向实战
上周参加了国外的比赛,名称叫:ApoorvCTF 看一下老外的比赛跟我们有什么不同,然后我根据国内比赛对比发现,他们考点还是很有意思的,反正都是逆向,哈哈哈 Rusty Vault 题目描述: In the heart of an abandoned shrine, there's an old, rusted vault saidto guard an unspeakable secret. Many have tried to unlock it, but thedoor's demands are strange and no key seems to fit. 进入main函数,开始分析 这个命名方式,大概率是Rust语言 对于rust语言逆向,一般采用动态调试分析的方法 主要还是看汇编,因为F5根本看不出来啥东西。。。 从if比较处,可以看到成功和失败两个结果 那么这个比较绝对很关键 进入后发现,啥也没啊? 坏了,得看汇编,为代码估计又出问题了 发现了check2,果然为代码啥也看不到 对比check1-2 发现是在检测输入的字符串的字符类型,还是冲突的,不管了继续分析 下面可以看到失败 往下滑动可以看到成功 什么意思? 我猜测这题是改条件,然后动态输出flag?还有这好事 后面都是正常输出flag了 那么我们现在去解密的地方回溯,估计我要改一些判断,改变流程,让程序正常走到解密的地方,然后输出flag 教大家一个回溯方法 对标签疯狂X键,交叉引用定位回溯 最终定位到密文,发现是aes_128_cbc模式 需要:key+IV+密文=明文 这是一种思路,大家可以尝试 本文修改流程,让他自动输出明文 现在的思路就是: x键回溯定位关键标签,修改关键判断 让程序自动走向解密 nop掉check1 和 check2 让他们走向自动解密的方向 最终运行程序得到flag,静态patch流程,绕过check1-chekc2 apoorvctf{P4tch_1t_L1k3_1t's_HOt} 这在我们国内比赛还是很少见到的,国内大概率要写脚本解密,或许国内认为加密才是CTF的重点。国外侧重逆向本身,如果可以patch修改流程得到flag,为什么要去写解密脚本呢? 锻炼了我们通过汇编分析程序流程的能力,而不是为代码一键分析。
网络安全日报 2025年03月07日
1、研究人员发现一起针对阿联酋的攻击活动 https://www.proofpoint.com/us/blog/threat-insight/call-it-what-you-want-threat-actor-delivers-highly-targeted-multistage-polyglot 研究人员发现一起具有高度针对性的电子邮件攻击活动,其目标涉及阿拉伯联合酋长国的航空、卫星通信组织以及关键交通基础设施。研究人员在此次攻击活动中发现了名为“Sosano”的新型后门,该后门利用多种技术来进行混淆,这可能表明攻击者具有强大的开发能力,并有意阻碍分析人员对其有效载荷进行分析。研究人员将此次攻击活动背后的攻击组织命名为“UNK_ 2、研究人员披露一起名为GrassCall的攻击活动 https://www.broadcom.com/support/security-center/protection-bulletin/grasscall-malware-campaign-spreads-infostealers-to-job-seekers 研究人员最近发现一起名为“GrassCall”的攻击活动,并将其归因于名为“Crazy Evil”的攻击组织。攻击者针对求职者发起虚假的面试,以传播用于信息窃取的恶意软件。攻击者在LinkedIn或CryptoJobsList等多个知名网站上发布虚假的招聘广告,受害者被要求下载名为“GrassCall”的虚假视频会议软件。根据目标操 3、谷歌在Chrome 134中修复多个安全漏洞 https://cybersecuritynews.com/chrome-134-released-fixes-14-vulnerabilities/ 谷歌已在稳定渠道中推出Chrome 134,提供了关键的安全更新。在此次安全更新中,共修复了14个安全漏洞,其中包括可能导致浏览器崩溃、数据泄露或任意代码执行的高危漏洞。此次更新修复了V8 JavaScript引擎、DevTools和PDFium等核心组件中的漏洞,同时实施了更严格的边界检查和内存管理协议。在大多数用户使用修复版本之前,谷歌已暂时限制对漏洞详细报告的访问,以防止漏洞被恶意利用。建议用户手动执行更新,或启用自动更新升级至最新版本 4、YouTube警告称攻击者利用AI生成的视频进行攻击活动 https://www.bleepingcomputer.com/news/security/youtube-warns-of-ai-generated-video-of-its-ceo-used-in-phishing-attacks/ YouTube警告称,攻击者正在利用AI生成的视频进行网络钓鱼攻击,以窃取创作者的凭据。攻击者通过钓鱼邮件以私人视频的形式向目标用户发送虚假视频,其中包括YouTube首席执行官Neal Mohan宣布创作者获利形式变更的AI生成视频。钓鱼邮件中视频的描述要求用户点击一个链接,该链接将跳转至一个虚假网页,要求用户输入账号及密码进行登录,攻击者以此窃取用户凭 5、最新研究,谷歌大量收集用户数据,无需打开应用 https://www.freebuf.com/news/423763.html 都柏林三一学院教授D.J.雷斯的这项研究首次记录了,预装谷歌应用如何在未经用户同意且不提供退出选项的情况下进行静默追踪。该研究检查了谷歌Play服务、谷歌Play商店及其他预装谷歌应用在安卓手机上存储的Cookie、标识符和其他数据。测试使用搭载Android 14系统的谷歌Pixel 7机型,并安装了最新版本的谷歌Play服务和商店应用。 6、WordPress插件曝9.8分高危漏洞,可执行远程代码攻击 https://www.freebuf.com/vuls/423693.html GiveWP Donation插件中存在一个严重的安全漏洞(编号为CVE-2025-0912),该漏洞已导致超过10万家WordPress网站面临未经身份验证的远程代码执行(RCE)攻击风险。该漏洞的CVSS评分为9.8(严重),其根源在于插件在处理Donation 表单时未能正确验证用户输入的数据。 7、Elastic发布紧急修复程序以解决高危Kibana 漏洞 https://thehackernews.com/2025/03/elastic-releases-urgent-fix-for.html Elastic 已推出安全更新以解决影响 Elasticsearch 中的 Kibana 数据可视化仪表板软件的一个关键安全漏洞,该漏洞可能导致任意代码执行。该漏洞跟踪为 CVE-2025-25012,拥有最高分为 10.0 的 CVSS 得分为 9.9。它被描述为一种原型污染情况。 8、Gartner发布2025年网络安全六大预测 https://www.freebuf.com/news/423730.html 国际咨询机构Gartner近日发布了2025年六大网络安全趋势。这些趋势受到生成式AI的发展、数字去中心化、供应链相互依赖性、法规变更、长期人才短缺以及不断演变的威胁形势的共同影响。 9、Vim 编辑器漏洞:恶意 TAR 文件触发代码执行风险 https://www.freebuf.com/vuls/423695.html Vim 文本编辑器的漏洞 CVE-2025-27423 是一个高严重性问题,攻击者可以通过恶意 TAR 文件实现任意代码执行。该漏洞影响 Vim 9.1.1164 之前的版本,涉及 tar.vim 插件,当用户处理特制的 TAR 文件时,可能导致命令注入攻击。该漏洞于 2025 年 3 月修复,暴露了文件处理流程中输入验证的关键缺陷。 10、CISA警告VMware漏洞正遭积极利用,敦促企业立即修补 https://www.freebuf.com/news/423684.html 2025年3月4日,美国网络安全和基础设施安全局(CISA)发布紧急警报,将三个关键VMware漏洞添加到其已知被利用漏洞(KEV)目录中,原因是有证据表明这些漏洞正在被积极利用。这些漏洞编号为CVE-2025-22224、CVE-2025-22225和CVE-2025-22226,攻击者可以利用它们在有权限访问虚拟机(VM)的情况下提升权限、在虚拟机管理程序(hypervisor)上执行代码,并窃取敏感的内存数据。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年03月06日
1、攻击者利用假冒的Go软件包传播恶意软件 https://socket.dev/blog/typosquatted-go-packages-deliver-malware-loader 研究人员发现了一项持续的恶意活动。在该活动中,攻击者发布了至少七个冒充流行Go库的软件包,其中一个似乎针对金融行业的开发人员进行攻击。这些软件包具有重复的恶意文件名,并且使用了相同的混淆技术。这些恶意软件包针对使用Linux和macOS系统的用户进行攻击,构建隐藏的shell命令下载并执行脚本,脚本会在等待一个小时之后获取最终的恶意软件。 2、研究人员披露新型僵尸网络Eleven11bot https://www.bleepingcomputer.com/news/security/new-eleven11bot-botnet-infects-86-000-devices-for-ddos-attacks/ 研究人员发现一种名为“Eleven11bot”的新型僵尸网络,已感染超过86000台物联网设备,主要控制安全摄像头和网络视频录像机(NVR)发起DDoS攻击。该僵尸网络已经发起针对电信服务提供商和在线游戏服务器的分布式拒绝服务(DDoS)攻击。研究人员称“Eleven11bot”是他们近年来观察到的最大的DDoS僵尸网络之一。威胁监控平台报告称,他们发现86400台设备感染 3、VMware警告其产品中的三个漏洞正被利用 https://cybersecuritynews.com/vmware-esxi-vulnerabilities-exploited/ VMware发布了一项关键的安全公告(VMSA-2025-0004),警告其ESXi、Workstation和Fusion产品中的三个漏洞正在被积极利用。这些漏洞分别是CVE-2025-22224(CVSS评分9.3)、CVE-2025-22225(CVSS评分8.2)和CVE-2025-22226(CVSS评分7.1),允许攻击者执行恶意代码、提升权限和泄露敏感内存数据。其中最严重的漏洞是CVE-2025-22224,允许虚拟机上具有本地管理员权限的攻击 4、重大安全威胁!全球近5W个访问管理系统存在严重安全漏洞 https://www.freebuf.com/news/423544.html 荷兰IT安全咨询公司Modat发现,全球范围内部署的约49,000个访问管理系统(AMS)存在严重的安全漏洞。这些系统本应通过密码、生物识别和多因素认证等身份验证方法控制建筑物访问,然而却因关键配置错误导致敏感数据暴露,使设施面临未经授权进入的风险。 5、新型后门程序利用polyglot文件传播 https://www.freebuf.com/news/423552.html 某威胁行为者正在使用polyglot文件隐藏新型后门程序的安装,这是针对阿联酋企业,特别是航空、卫星通信和交通行业的鱼叉式钓鱼攻击的一部分。 6、Windows KDC曝代理RCE漏洞:可远程控制服务器 https://www.freebuf.com/news/423537.html 安全研究人员近日在微软的Windows密钥分发中心(KDC)代理中发现了一个严重的远程代码执行漏洞(CVE-2024-43639),攻击者可能利用该漏洞完全控制受影响的服务器。该漏洞源于KDC代理服务中缺乏对Kerberos响应长度的检查,导致整数溢出,从而使得未经身份验证的远程攻击者能够以目标服务的权限执行任意代码,可能导致系统完全沦陷。 7、最新黑产技术曝光,只需19分钟即可劫持AI大模型 https://www.freebuf.com/news/423534.html 最新研究表明,网络攻击者正在利用泄露的云凭证在几分钟内劫持企业AI系统。近期事件显示,攻击者能够在19分钟内攻破大型语言模型(LLM)的基础设施。这种被称为“LLMjacking”的攻击方法以非人类身份(NHIs)——如API密钥、服务账户和机器凭证——为目标,绕过传统安全控制,并利用窃取的生成式AI访问权限牟利。 8、Chrome 134, Firefox 136 修复高危漏洞 https://www.securityweek.com/chrome-134-firefox-136-patch-high-severity-vulnerabilities/ Chrome 134 和 Firefox 136 在周二被发布到稳定渠道,修复了数十个漏洞,包括多个高严重性错误。 9、Google为安卓推出基于AI的诈骗检测功能以应对对话欺诈 https://thehackernews.com/2025/03/google-rolls-out-ai-scam-detection-for.html Google 已宣布推出基于人工智能(AI)的诈骗检测功能,以确保 Android 设备用户及其个人信息的安全。这些功能专门针对对话式诈骗,这些诈骗行为在最初往往看似无害,但在之后可能会演变成为有害的情况,谷歌表示。“而且越来越多的电话诈骗者正在使用篡改来电显示的技术来隐藏他们的真实电话号码,并冒充可信的公司。” 10、NVIDIA 解决了高危的 HGX 管理控制器漏洞 https://securityonline.info/cve-2024-0114-nvidia-addresses-high-severity-hmc-vulnerability/ Nvidia 已发布一个安全更新,修复了其 Hopper HGX 8-GPU HMC 中的两个漏洞,包括一个高危漏洞,该漏洞可能允许未经授权的代码执行、权限提升和数据篡改。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年03月05日
1、俄罗斯电信公司Beeline遭受网络攻击 https://therecord.media/russian-telecom-beeline-outages-cyber 俄罗斯电信公司Beeline遭受有针对性的分布式拒绝服务 (DDoS) 攻击,这导致一些俄罗斯用户的互联网中断。Beeline向当地媒体证实了此次攻击,该运营商拥有超过4400万用户。互联网监控服务Downdetector的数据显示,俄罗斯大多数Beeline用户在访问该公司移动应用程序时遇到了困难,一些用户还报告了网站中断、通知失败和互联网中断等情况。俄罗斯通信监管机构Roskomnadzor报告称,在此次攻击事件发生后,莫斯科及周边地区的用户就连接问题提出了大量投诉 2、谷歌推出“屏蔽邮件”功能 助力用户隐藏邮箱地址 https://www.freebuf.com/articles/endpoint/423406.html 谷歌正在通过开发“屏蔽邮件”(Shielded Email)功能来增强其电子邮件隐私防护能力。该功能旨在为用户在注册应用程序和服务时生成一次性邮件别名。这一工具最早在Android Authority对Google Play Services v24.45.33 APK的拆解中被发现,其主要目的是减少垃圾邮件并保护主要Gmail地址不被泄露。“屏蔽邮件”功能将集成到Gboard的自动填充系统中,允许安卓用户在注册过程中创建随机的、一次性使用的电子邮件地址。这一功能与苹果的“隐藏我的邮件 3、攻击者在黑客论坛上出售 VMware ESXi 零日漏洞 https://cybersecuritynews.com/threat-actor-vmware-esxi-0-day/ 一个以别名“Vanger”的网络犯罪分子在地下论坛上浮出水面,提供了据称针对 VMware ESXi 虚拟机监控程序的零日漏洞。 4、超3.5万个网站遭入侵:恶意脚本将用户重定向至赌博平台 https://www.freebuf.com/articles/web/423381.html 2025年2月20日,网络安全领域发生了一起大规模入侵事件,超过3.5万个网站遭到攻击,攻击者在这些网站中植入了恶意脚本,完全劫持用户的浏览器窗口,并将其重定向至赌博平台。此次攻击主要针对使用中文的地区,最终落地页推广的是名为“Kaiyun”的赌博内容。 5、320万用户因恶意浏览器扩展程序遭信息泄露 https://www.anquanke.com/post/id/304902 一项新发现的网络安全威胁显示,至少有 320 万用户受到伪装成合法实用工具的恶意浏览器扩展程序的影响。一组由 16 个扩展程序组成的集群 —— 涵盖从屏幕截图工具到广告拦截器以及表情符号键盘等 —— 被确认会向用户浏览器中注入恶意代码。据 GitLab 威胁情报显示,这些扩展程序不仅助长了广告欺诈和搜索引擎优化(SEO)操纵行为,还带来了严重的数据泄露风险,并且可能为进一步的网络入侵提供初始访问权限。 6、高通和 MediaTek发布芯片组多个漏洞的补丁 https://www.securityweek.com/vulnerabilities-patched-in-qualcomm-mediatek-chipsets/ 芯片制造商高通和 MediaTek 于周一宣布了针对许多漏洞的补丁,包括最新 Android 修复中解决的五个问题。Qualcomm 的 2025 年 3 月安全公告详细列出了 14 个影响数十款芯片组模型中专用软件的安全缺陷,其中包括七个被评为“严重程度关键”的问题。 7、Broadcom 修复了 3 个 VMware 的零日漏洞 https://www.securityweek.com/broadcom-patches-3-vmware-zero-days-exploited-in-the-wild/ Broadcom 在周二上午发布了一个安全警报,警告 VMware 客户有三个在野外被利用的零日漏洞。这些漏洞被追踪为 CVE-2025-22224、CVE-2025-22225 和 CVE-2025-22226,影响 VMware ESXi、Workstation 和 Fusion。 8、谷歌3月Android安全更新修复了两个正在被利用的漏洞 https://thehackernews.com/2025/03/googles-march-2025-android-security.html Google 已发布其 2025 年 3 月的 Android 安全公告,以解决总共 44 个漏洞,包括两个已被证实正在野外被积极利用的漏洞。 9、Angel One 数据泄露:800 万用户个人记录面临风险 https://cybersecuritynews.com/angel-one-data-breach/ 领先的金融服务平台 Angel One 披露了一起违规行为,涉及在其部分 Amazon Web Services (AWS) 资源遭到入侵后未经授权访问特定客户数据。 10、黑客滥用Google和PayPal的基础设施来窃取个人数据 https://cybersecuritynews.com/hackers-abused-google-and-paypals-infrastructure/ 安全研究人员发现了一个协同攻击活动,利用 Google 广告生态系统和 PayPal 商家工具中的漏洞来窃取敏感的用户数据。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年03月04日
1、研究人员披露Lotus Blossom组织发起的攻击活动 https://blog.talosintelligence.com/lotus-blossom-espionage-group 研究人员发现了多起针对政府、制造业、电信和媒体的网络间谍活动,攻击者在这些活动中使用了Sagerunex后门和其他黑客工具,用于进行入侵后的攻击活动。研究人员将这些攻击归因于名为Lotus Blossom的攻击组织。Lotus Blossom自2012年以来就一直进行网络间谍活动,并且至今仍在进行。研究人员观察到Lotus Blossom使用特定命令在系统注册表中植入其Sagerunex后门,并在受害计算机中为其创建服务从而获得持久性。Lotus Blossom还 2、研究人员披露LARVA-208组织发起的攻击活动 https://catalyst.prodaft.com/public/report/larva-208/overview Larva-208(又名“EncryptHub”)组织一直在全球范围内针对组织发起鱼叉式网络钓鱼和社会工程攻击,以获取企业网络的访问权限。研究人员披露,自2024年6月以来,该组织已入侵至少618个组织。获得访问权限后,该攻击组织会植入远程监控和管理(RMM)软件,然后部署Stealc和Rhadamanthys等窃密木马。在许多观察到的案例中,该组织还会在受感染的系统上部署勒索软件。研究人员称,该组织与RansomHub和BlackSuit存在关联,过去曾在攻击活动中部 3、PingAM Java Agent中存在一个安全漏洞 https://cybersecuritynews.com/pingam-java-agent-vulnerability/ Ping Identity已为其PingAM Java Agent发布紧急安全公告,揭示了一个安全漏洞(CVE-2025-20059),该漏洞使攻击者能够绕过策略执行机制,并能够未经授权访问受保护的资源。该漏洞被归类为相对路径遍历漏洞,CVSS评分为9.8,对使用PingAM进行混合云身份验证的企业构成系统性风险。目前尚未存在与此漏洞相关的入侵事件。 4、开源安全平台Wazuh中存在一个安全漏洞 https://cybersecuritynews.com/wazuh-server-vulnerability-rce/ Wazuh是一个用于威胁检测和合规性监控的流行开源安全平台,在该平台中存在一个远程代码执行(RCE)漏洞。该漏洞被标识为CVE-2025-24016,CVSS评分为9.9,允许具有API访问权限的攻击者在服务器上执行任意Python代码,对受影响的系统构成重大威胁。 该漏洞源于Wazuh API的DistributedAPI组件中的不安全反序列化,攻击者可以通过将未经清理的字典注入DistributedAPI(DAPI)请求或响应来利用此漏洞,从而执行任意代码。目前Wa 5、勒索软件团伙利用Paragon分区管理程序漏洞实施BYOVD攻击 https://www.freebuf.com/vuls/423270.html 微软发现Paragon分区管理程序的BioNTdrv.sys驱动存在五个漏洞,其中有一个已被勒索软件团伙用于零日攻击,以获取Windows系统的SYSTEM权限。这些易受攻击的驱动程序在“自带漏洞驱动程序”(BYOVD)攻击中被利用,攻击者将内核驱动程序植入目标系统以提升权限。 6、大语言模型训练集中发现超1.2万个API密钥和密码 https://www.freebuf.com/articles/database/423210.html 用于训练大语言模型(LLMs)的数据集中被发现包含近1.2万个有效的密钥信息,这些密钥可以成功进行身份验证。Truffle Security表示,他们从Common Crawl下载了一个2024年12月的存档,该存档维护着一个免费、开放的网页抓取数据存储库。这个庞大的数据集包含超过2500亿个页面,时间跨度长达18年。该存档具体包含400TB的压缩网页数据、9万个WARC文件(Web存档格式)以及来自3830万个注册域名的4750万个主机的数据。公司的分析发现,Common Crawl 7、微软因安全风险下架900万次下载的VSCode扩展 https://ti.dbappsecurity.com.cn/info/9990 微软近日因安全风险下架了两款在Visual Studio Marketplace上极受欢迎的VSCode扩展——'Material Theme – Free'和'Material Theme Icons – Free'。这两款扩展总共被下载近900万次,用户现已收到VSCode的自动禁用警告。 8、黑客利用流行框架(Krpano)中的XSS漏洞劫持大量网站 https://cybersecuritynews.com/hackers-exploited-xss-vulnerability-framework/ Krpano框架是一个广泛用于嵌入360°图像和创建虚拟导览的流行工具。最近,该框架中的一个跨站脚本(XSS)漏洞被黑客利用,向超过大量网站注入了恶意脚本。 9、虚假验证码网络钓鱼活动影响超1150个组织 https://www.anquanke.com/post/id/304893 Netskope Threat Labs发现了一场大规模的网络钓鱼活动,该活动利用嵌入在 PDF 文档中的虚假验证码(CAPTCHA)图片来窃取信用卡信息并传播恶意软件。自 2024 年下半年以来,这场活动已影响了超过 1150 个组织和 7000 名用户。 10、波兰航天局遭受网络攻击,紧急断开互联网连接 https://www.secrss.com/articles/76209 综合波兰通讯社和路透社的最新报道,波兰数字事务部长克日什托夫·加夫科夫斯基(Krzysztof Gawkowski)于2025年3月2日(星期天)宣布,波兰网络安全部门检测到波兰航天局(POLSA)的IT系统遭受了网络攻击。攻击者未经授权访问了POLSA的电信基础设施。为确保数据安全,POLSA已立即将其网络与互联网断开连接,并正在与相关服务部门合作分析事件。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年03月03日
1、Android银行木马TgToxic新变种升级反分析功能 https://intel471.com/blog/android-trojan-tgtoxic-updates-its-capabilities 发现的Android银行木马TgToxic经历了重大更新。这一新版本被称为ToxicPanda,旨在窃取用户凭证和数字货币。研究表明,该恶意软件运营者正计划扩展其攻击范围,新的目标包括欧洲和拉丁美洲的银行。更新后的木马采用了更复杂的模拟器检测技术,能够有效避开自动分析。同时,恶意软件的C2连接方式也发生了变化,从硬编码服务器转向使用域生成算法(DGA),增强了隐蔽性和生存能力。 2、虚假视频链接成恶意软件传播新诱饵 https://www.mcafee.com/blogs/other-blogs/mcafee-labs/the-dark-side-of-clickbait-how-fake-video-links-deliver-malware/ 研究机构发现网络犯罪分子利用虚假视频链接作为诱饵,通过多层次的社交工程手段传播恶意软件。攻击者通过带有点击诱饵的PDF文件,将用户重定向至多个恶意网站,最终引导用户下载受密码保护的ZIP文件,其中包含恶意软件负载。该攻击利用用户对独家内容的好奇心,通过虚假视频页面和误导性下载按钮,诱使用户主动参与恶意软件的传播。 3、LCRYX勒索软件再次针对Windows系统发起攻击 https://labs.k7computing.com/index.php/lcryx-ransomware-how-a-vb-ransomware-locks-your-system/ LCRYX勒索软件是一种使用VBScript编写的恶意程序,于2024年11月首次出现,并于2025年2月再次活跃。该勒索软件通过加密用户文件并添加“.lcryx”扩展名,要求受害者支付500美元的比特币赎金以换取解密工具。LCRYX在执行过程中会获取管理员权限,修改系统注册表,禁用任务管理器、命令提示符和防病毒软件,以确保其持久性和隐蔽性。此外,它还会通过加密文件、删除卷影副本和修改文件属性来阻碍用户恢 4、因AMS配置错误全球超49000台门禁信息暴露 https://www.modat.io/post/doors-wide-open-critical-risks-in-ams 研究人员发现,全球有超过49000台配置错误的访问管理系统(AMS)暴露在互联网上,危及隐私和物理安全。这些系统用于控制员工通过生物识别、身份证或车牌进入建筑物和禁区,但因安全身份验证配置错误,大量敏感数据被暴露,包括个人身份信息、生物特征数据、照片、工作时间表和访问日志。研究人员还发现,攻击者可编辑员工记录、添加虚假员工、更改访问凭据或操纵建筑入口系统,导致未经授权的物理访问。意大利、墨西哥和越南是暴露系统最多的国家。 5、跨国联合行动逮捕GHOSTR网络犯罪分子 https://www.group-ib.com/media-center/press-releases/joint-operation-with-royal-thai-police-and-singapore-police-force/ 安全机构协助泰国皇家警察和新加坡警察部队开展联合行动,成功逮捕了一名涉嫌90多起数据泄露事件的网络犯罪分子。该犯罪分子以多个化名(如ALTDOS、DESORDEN、GHOSTR和0mid16B)活动,自2020年以来一直活跃,主要攻击目标包括亚太、欧洲、北美和中东的医疗、金融、电子商务等行业。他通过SQL注入和RDP攻击入侵系统,利用修改版的CobaltS 6、GitLab修复多个安全漏洞 https://cybersecuritynews.com/gitlab-vulnerabilities-bypass-security-controls/ GitLab发布安全公告,称其平台中存在多个安全漏洞,其中包括两个跨站脚本(XSS)漏洞,攻击者可借此绕过安全控制并在用户浏览器中执行恶意脚本。这两个漏洞被标识为CVE-2025-0475(CVSS评分8.7)和CVE-2025-0555(CVSS评分7.7),影响多个版本的自我管理实例,攻击者能够利用漏洞进行会话劫持、凭据窃取和未经授权的系统访问。此外,还有三个漏洞分别为CVE-2024-8186(CVSS评分5.4)、CVE-202 7、Ivanti修复其ICS设备中的安全漏洞 https://cybersecuritynews.com/2850-ivanti-connect-secure-devices-vulnerable/ Ivanti修复其Ivanti Connect Secure (ICS)设备中的一个安全漏洞CVE-2025-22467,该漏洞使得受影响的设备容易遭到远程代码执行 (RCE) 攻击。该漏洞的CVSS评分为 9.9,被归类为基于堆栈的缓冲区溢出,影响ICS 22.7R2.6之前的版本。该漏洞源于对用户输入的处理不当,使经过身份验证的攻击者能够远程执行任意代码。如果被利用,可能导致系统遭到入侵。虽然尚未有该漏洞被利用的报告,但鉴于该漏洞的严重 8、法国电信运营商Orange集团证实数据遭到泄露 https://www.techradar.com/pro/security/orange-confirms-it-suffered-breach-after-hacker-leaks-company-documents Orange集团已确认遭受网络攻击,但表示仍在调查是否有重要的数据泄露。HellCat勒索组织中一名昵称为“Rey”的成员称获取了380000个电子邮件地址、源代码、发票、合同以及客户和员工信息,总共获得了大约12000个文件,大小约6.5GB。虽然这不是一次勒索软件攻击,但攻击者留下了一份勒索信,并试图向该公司勒索钱财。Orange集团确认其遭受了网络攻击,并正在调查此事 9、Better Auth库中存在一个安全漏洞 https://securityonline.info/account-takeover-vulnerability-found-in-better-auth-library 流行的TypeScript身份验证框架Better Auth库中存在一个安全漏洞,该漏洞可能允许攻击者绕过安全措施,并可能接管用户账号。该漏洞存在于trustedOrigins保护功能中,该功能用于将重定向限制在受信任的网站。然而,目前发现一个绕过方法,允许攻击者利用此功能将用户重定向至恶意网站。攻击者能够构造一个恶意链接并将其发送给受害者,当受害者点击该链接时,他们会被重定向到攻击者控制的网站,从而可能允许攻击者窃取 10、Qilin勒索组织声称对Lee Enterprises进行攻击 https://www.bleepingcomputer.com/news/security/qilin-ransomware-claims-attack-at-lee-enterprises-leaks-stolen-data/ Qilin勒索组织2月3日对Lee Enterprises进行攻击,此次攻击中断了其运营,并且该勒索组织声称从该公司窃取了数据。该勒索组织威胁受害者支付赎金,否则将于2025年3月5日泄露所有窃取的数据。勒索组织声称窃取了12万个文件,总计350GB。该公司披露称其在2025年2月3日遭受了网络攻击,导致重大运营中断。此次中断造成了严重问题,例如该公司失去了对内部 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
给大模型通过RAG挂上知识库
前言 因为大模型的知识库存在于训练期间,因此对于一些最新发生的事或者是专业性问题可能会出现不准确或者是幻觉,因此可以使用RAG技术给大模型外挂知识库来达到精准回答的目的。 实操 gpt4all 可以参考之前的文章:https://mp.weixin.qq.com/s/jeGqX-XYJRm-pFYEfkw2lw 他的优点就是通过UI在线下载模型和导入知识库,操作都比较一站式、傻瓜式。注意的是gpt4all的模型文件和ollama不通用。 open-webui 安装可以参考https://mp.weixin.qq.com/s/jeGqX-XYJRm-pFYEfkw2lw,也比较简单就不多赘述。 先看下在没有知识库的情况下,咨询相关问题时得到的结果是错误的: 可以通过如下方式进行知识库的构建: 右上角-工作空间-知识库-新增知识库空间-上传知识库文件 这个时候再咨询知识库中存在的内容时就可以得到满意的结果(引用的方式是在输入框中输入#): ima https://ima.qq.com/ima是腾讯出品的AI+知识库的软件。创建知识库的流程为: 首先有个缺点,它竟然不能上传markdown。还有些其他BUG,比如明明存在知识库,但是却选择不了: 因为没法设置prompt,如果你想让大模型每次都只从知识库中搜索不要联想,那么就就需要每次在输入框中输入特定prompt告知不要胡乱回答,结果发现又是混元问题,问答模型改成deepseek后好点: 终于明白这些公司为什么要接deepseek了,因此自己公司的太差。 langchain+chroma 上面介绍的都是通过图形化的方式进行,但是在一些工程化的地方可能没法进行图形化操作,接下来介绍使用代码的方式来进行让大模型外挂知识库。把文档投喂给大模型时需要先对文档进行向量转换,这里以https://github.com/chroma-core/chroma 官方代码为例: import chromadb # setup Chroma in-memory, for easy prototyping. Can add persistence easily! client = chromadb.Client()   # Create collection. get_collection, get_or_create_collection, delete_collection also available! collection = client.create_collection("all-my-documents")   # Add docs to the collection. Can also update and delete. Row-based API coming soon! collection.add(    documents=["This is document1", "This is document2"], # we handle tokenization, embedding, and indexing automatically. You can skip that and add your own embeddings as well    metadatas=[{"source": "notion"}, {"source": "google-docs"}], # filter on these!    ids=["doc1", "doc2"], # unique for each doc )   # Query/search 2 most similar results. You can also .get by id results = collection.query(    query_texts=["This is document1"],    n_results=2,   # where={"metadata_field": "is_equal_to_this"}, # optional filter   # where_document={"$contains":"search_string"} # optional filter ) print(results) 上述代码含义是创建了一个集合,并且往集合中添加知识库,每个知识库都必须有自己的独立id。注意,chroma只支持传入文本不支持直接引用文件,因此想要把文件转成向量需要先把文件读取出内容给到chroma才行。 得到的内容如下: {'ids': [['doc1', 'doc2']], 'embeddings': None, 'documents': [['This is document1', 'This is document2']], 'uris': None, 'data': None, 'metadatas': [[{'source': 'notion'}, {'source': 'google-docs'}]], 'distances': [[0.0, 0.2221483439207077]], 'included': [<IncludeEnum.distances: 'distances'>, <Inclu 其中distances代表是距离,笔者特地把搜索的问题和id为doc1的内容一致,因此可以看到得到的距离为0(距离越小,相似度越高),代表问题和文档一模一样,因此在后续投喂给大模型时,可以选择小于多少距离的投喂给大模型来解决token过长的问题。 接下来介绍https://github.com/langchain-ai/langchain,langchain功能和它的名字一样,简单理解就是它可以把各个东西和大模型串在一起,比如可以把上面chroma生成的文档向量投喂给大模型进行知识库问答。langchain牛逼的点是他做了很多第三方工具的集成,比如以langchains调用chroma生成向量数据库为例: from langchain_ollama import OllamaEmbeddings from langchain_chroma import Chroma from uuid import uuid4 from langchain_core.documents import Document   embeddings = OllamaEmbeddings(model="nomic-embed-text:latest")     vector_store = Chroma(    collection_name="example_collection",    embedding_function=embeddings,    persist_directory="./chroma_langchain_db", # Where to save data locally, remove if not necessary )   document_1 = Document(    page_content="I had chocolate chip pancakes and scrambled eggs for breakfast this morning.",    metadata={"source": "tweet"},    id=1, )   document_2 = Document(    page_content="The weather forecast for tomorrow is cloudy and overcast, with a high of 62 degrees.",    metadata={"source": "news"},    id=2, )   document_3 = Document(    page_content="Building an exciting new project with LangChain - come check it out!",    metadata={"source": "tweet"},    id=3, )   document_4 = Document(    page_content="Robbers broke into the city bank and stole $1 million in cash.",    metadata={"source": "news"},    id=4, )   document_5 = Document(    page_content="Wow! That was an amazing movie. I can't wait to see it again.",    metadata={"source": "tweet"},    id=5, )   document_6 = Document(    page_content="Is the new iPhone worth the price? Read this review to find out.",    metadata={"source": "website"},    id=6, )   document_7 = Document(    page_content="The top 10 soccer players in the world right now.",    metadata={"source": "website"},    id=7, )   document_8 = Document(    page_content="LangGraph is the best framework for building stateful, agentic applications!",    metadata={"source": "tweet"},    id=8, )   document_9 = Document(    page_content="The stock market is down 500 points today due to fears of a recession.",    metadata={"source": "news"},    id=9, )   document_10 = Document(    page_content="I have a bad feeling I am going to get deleted :(",    metadata={"source": "tweet"},    id=10, )   documents = [    document_1,    document_2,    document_3,    document_4,    document_5,    document_6,    document_7,    document_8,    document_9,    document_10, ] uuids = [str(uuid4()) for _ in range(len(documents))]   vector_store.add_documents(documents=documents, ids=uuids)   results = vector_store.similarity_search_with_score(    "Will it be hot tomorrow?", k=1, filter={"source": "news"} ) print("-----") print(results) print("-----") for res, score in results:    print(f"* [SIM={score:3f}] {res.page_content} [{res.metadata}]") print("-----") 上述代码意思是指生成10个文档,然后通过langchain内置的第三方模块能力把这10个文档写入到了example_collection集合中,且向量数据库持久化,保存的路径为chroma_langchain_db目录中,最后在向量数据库中以source为news、最接近的1个为条件文档中搜索问题: 接下来尝试使用langchain调用ollama进行与本地大模型进行沟通: from langchain_ollama import ChatOllama   llm = ChatOllama(    model="deepseek-r1:latest",    temperature=0.5, ) messages = [   (        "system",        "角色:你是IT小助手,你只回答IT相关问题,其他问题不回答。当别人问你是谁时,你回答:我是IT小助手。",   ),   ("human", "你是谁"), ] ai_msg = llm.invoke(messages) print(ai_msg) 上述代码通过设置system prompt来约束了大模型的输出: 上面提到chroma无法直接传入文件,因此langchian提供了https://python.langchain.com/docs/concepts/document_loaders/来实现读取不同类型的文件并输入给chroma。为了解决嵌入模型和大语言模型输入的的token限制,需要对文档进行分割,下面以读取txt文件为例,通过对内容进行分割,然后提供给嵌入模型转成向量并搜索相似度后,带入到大语言模型的上下文中进行提问: from typing import Dict import logging from pathlib import Path   from langchain_ollama import ChatOllama from langchain_core.prompts import ChatPromptTemplate from langchain_ollama import OllamaEmbeddings from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.document_loaders import TextLoader from langchain.chains import RetrievalQA from langchain_chroma import Chroma class VectorStoreQA:    def __init__(self,                 model_name: str = "deepseek-r1:latest",                 embedding_model: str = "nomic-embed-text:latest",                 temperature: float = 0.5,                 k: int = 4):        """        初始化 QA 系统                Args:            model_name: LLM 模型名称            embedding_model: 嵌入模型名称            temperature: LLM 温度参数            k: 检索返回的文档数量        """       # 配置日志        logging.basicConfig(            level=logging.INFO,            format='%(asctime)s - %(levelname)s - %(message)s'       )        self.logger = logging.getLogger(__name__)        self.k = k       # 初始化 LLM        self.llm = ChatOllama(            model=model_name,            temperature=temperature,       )               # 初始化 embeddings        self.embeddings = OllamaEmbeddings(model=embedding_model)               # 初始化向量存储        self.vector_store = Chroma(embedding_function=self.embeddings)               # 初始化 prompt 模板       # self.prompt = ChatPromptTemplate.from_messages([       #     ("system", """你的任务是且只基于提供的上下文信息回答用户问题。要求:1. 回答要准确、完整,并严格基于上下文信息2. 如果上下文信息不足以回答问题,不要编造信息和联想,直接说:在知识库中我找不到相关答案3. 采用结构化的格式组织回答,便于阅读"""),       #     ("user", """上下文信息:       #     {context}                   #     用户问题:{question}                   #     请提供你的回答:""")       # ])        self.prompt = ChatPromptTemplate.from_messages([           ("system", """上下文中没有相关资料的不要编造信息、不要从你历史库中搜索,直接说:在知识库中我找不到相关答案。"""),           ("user", """上下文信息:{context}            用户问题:{question}            请提供你的回答:""")       ])                  def load_documents(self, file_path: str, chunk_size: int = 1000, chunk_overlap: int = 200) -> None:        """        加载并处理文本文档                Args:            file_path: 文本文件路径            chunk_size: 文档分块大小            chunk_overlap: 分块重叠大小        """        try:           # 验证文件            path = Path(file_path)            if not path.exists():                raise FileNotFoundError(f"文件不存在: {file_path}")                       # 加载文档            loader = TextLoader(str(path))            docs = loader.load()                       # 文档分块            text_splitter = RecursiveCharacterTextSplitter(                chunk_size=chunk_size,                chunk_overlap=chunk_overlap           )            splits = text_splitter.split_documents(docs)                       # 添加到向量存储            self.vector_store.add_documents(documents=splits)            self.logger.info(f"成功加载文档: {file_path}")                    except Exception as e:            self.logger.error(f"文档处理错误: {str(e)}")            raise      def get_answer(self, question: str) -> Dict:        """        获取问题的答案        Args:            question: 用户问题        Returns:            包含答案的字典        """       # 使用similarity_search_with_score方法获取文档和分数          docs_and_scores = self.vector_store.similarity_search_with_score(              query=question,              k=self.k       )                 # 打印每个文档的内容和相似度分数          print("\n=== 检索到的相关文档 ===")          for doc, score in docs_and_scores:              print(f"\n相似度分数: {score:.4f}") # 保留4位小数              print(f"文档内容: {doc.page_content}")              print(f"元数据: {doc.metadata}") # 如果需要查看文档元数据              print("-" * 50) # 分隔线           # 提取文档内容用于后续处理          context = "\n\n".join(doc.page_content for doc, _ in docs_and_scores)         # 打印完整的prompt内容          print("\n=== 实际发送给模型的Prompt ===")          formatted_prompt = self.prompt.format(              question=question,              context=context         )          print(formatted_prompt)          print("=" * 50)         # docs = self.retriever.get_relevant_documents(question)         # 将文档内容合并为上下文         # context = "\n\n".join(doc.page_content for doc in docs)         # print(context)       # 创建chain并调用        chain = self.prompt | self.llm          response = chain.invoke({              "question": question,              "context": context         })          return response    def clear_vector_store(self):        """清空向量存储"""        try:            self.vector_store.delete_collection()            self.vector_store = Chroma(embedding_function=self.embeddings)            self.logger.info("已清空向量存储")        except Exception as e:            self.logger.error(f"清空向量存储时发生错误: {str(e)}")            raise   # 使用示例 if __name__ == "__main__":   # 初始化 QA 系统    qa_system = VectorStoreQA(        model_name="deepseek-r1:latest",        k=4   )       # 加载文档    qa_system.load_documents("/tmp/1.txt")       # 提问    question = "猪八戒是谁?"    result = qa_system.get_answer(question)    print(result) 总结 如果只是想简单尝试下大模型+知识库,那么gpt4all和ima都可以,毕竟都是图形化点点点就行,如果想要去自定义一些模型或者本身依赖ollama运行模型的话,可以选择open-webui,其可以有更多的自定义能力,如果想要在工程化中使用,建议使用langchain+chroma。
网络安全日报 2025年02月28日
1、UAC-0173组织利用DCRat攻击乌克兰公证机构 https://cert.gov.ua/article/6282536 乌克兰计算机应急响应小组(CERT-UA)近日警告称,编号为UAC-0173的组织正在利用DCRat(DarkCrystal RAT)远程访问木马攻击乌克兰公证机构。攻击始于2025年1月中旬,通过伪装成乌克兰司法部的网络钓鱼邮件,诱使受害者下载恶意可执行文件。该文件托管在Cloudflare的R2云存储服务中,一旦执行,将部署DCRat恶意软件。攻击者还使用RDPWRAPPER、FIDDLER、NMAP和XWorm等工具进一步渗透系统,窃取凭证和敏感数据,并通过受感染系统发送恶意邮件扩大攻击范围。 2、新型Linux后门Auto-Color利用规避技术躲避检测 https://unit42.paloaltonetworks.com/new-linux-backdoor-auto-color/ 研究人员近期发现了一种名为Auto-Color的新型Linux后门恶意软件。该恶意软件通过使用看似无害的文件名、隐藏网络活动以及部署专有加密算法等手段,成功规避了传统安全检测。Auto-Color允许攻击者完全远程控制受感染机器,并通过挂钩libc函数隐藏其活动。恶意软件还利用自定义加密算法保护其命令和控制(C2)通信,确保每次部署时使用不同的配置。受攻击目标主要集中在北美和亚洲的大学及政府机构。 3、僵尸网络PolarEdge利用TLS后门攻击全球设备 https://blog.sekoia.io/polaredge-unveiling-an-uncovered-iot-botnet/ 研究团队发现了一个名为PolarEdge的僵尸网络,该网络利用CVE-2023-20118漏洞攻击思科小型企业路由器,并通过TLS后门控制全球超过2000台设备。攻击者通过部署Webshell和TLS后门,成功感染了华硕、QNAP和Synology等品牌的设备。PolarEdge僵尸网络自2023年底开始活跃,其基础设施分布在新加坡、拉脱维亚等地,攻击者通过FTP分发恶意载荷,并使用TLS加密通信隐藏其活动。该僵尸网络的目标尚不明确,但可能用于发起分布式网络 4、黑客利用Krpano框架漏洞向多个网站注入垃圾广告 https://olegzay.com/360xss/ 近日,黑客组织利用Krpano VR库中的反射型XSS漏洞,对数百个网站发起大规模攻击。攻击者通过注入恶意脚本,劫持谷歌搜索索引,分发垃圾广告和虚假内容。受影响的网站包括政府门户、顶尖大学、新闻媒体等知名机构。攻击者利用SEO优化技术,将恶意链接推至搜索结果前列,甚至伪装成合法内容(如CNN文章)以增加可信度。此次攻击不仅影响了网站的正常运营,还可能导致用户隐私泄露和信任危机。 5、思科修复OpenH264编解码器高危漏洞 https://securityonline.info/openh264-codec-vulnerability-cve-2025-27091-remote-code-execution-possible/ 思科披露OpenH264编解码器库中存在一个高危漏洞(CVE-2025-27091),CVSSv4评分为8.6。该漏洞源于解码函数中的竞争条件,可能导致堆溢出,进而允许远程攻击者执行任意代码。攻击者可通过制作恶意视频比特流,诱使受害者处理该视频,从而触发漏洞。思科已在2.6.0版本中修复该漏洞,并强烈建议用户尽快升级以规避风险。 6、美国DISA公司遭遇网络攻击致330万用户信息泄露 https://hackread.com/us-background-check-firm-data-breach-exposes-records/ 美国背景调查公司DISA Global Solutions宣布发生重大数据泄露事件,超过330万人的个人信息被泄露,其中包括1.5万名缅因州居民。泄露事件发生在2024年2月9日至4月22日之间,攻击者未经授权访问了DISA的网络,并获取了包括姓名、社会保险号、驾驶执照号、财务账户信息等敏感数据。DISA表示,目前尚未发现数据被滥用的情况,并已采取措施加强网络安全,同时为受影响个人提供为期12个月的信用监控服务。 7、新型攻击“nRootTag”将15亿部iPhone变为免费追踪器 https://www.freebuf.com/vuls/423102.html 一种名为“nRootTag”的新型攻击,将超过15亿台苹果设备(包括iPhone、iPad、Apple Watch和Mac)暴露在恶意攻击者的隐蔽追踪之下。这项攻击由研究人员Junming Chen、Xiaoyue Ma、Lannan Luo和Qiang Zeng在即将发布的2025年USENIX安全研讨会论文中详细阐述,它通过利用苹果的“查找我的”网络,将非苹果设备变为无需root访问权限的隐秘追踪信标。该攻击利用了蓝牙低功耗(BLE)协议,对全球隐私构成了前所未有的威胁。 8、瑞典要求加密通信应用部署后门,Signal强烈反对 https://www.freebuf.com/news/422993.html 瑞典执法和安全机构正在推动一项立法,要求加密通信应用(如Signal和WhatsApp)植入后门,以便当局能够访问用户通信内容进行犯罪调查。然而,这一提议遭到了Signal和瑞典军队的强烈反对。 9、GitVenom 攻击利用数百个 GitHub 存储库窃取加密货币 https://www.bleepingcomputer.com/news/security/gitvenom-attacks-abuse-hundreds-of-github-repos-to-steal-crypto/ 一个名为 GitVenom 的恶意软件活动使用数百个 GitHub 存储库诱骗用户下载信息窃取程序、远程访问木马 (RAT) 和剪贴板劫持程序,以窃取加密和凭证。 10、Black Basta 勒索软件利用的23个漏洞被广泛利用 https://www.freebuf.com/vuls/423105.html GreyNoise 已确认,在黑帽勒索软件组织 Black Basta 的内部聊天记录中提到的 62 个漏洞中,有 23 个正在被积极利用。这些漏洞涉及企业软件、安全设备和广泛部署的 Web 应用程序,其中多个关键漏洞在过去的 24 小时内已被利用。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 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逆向场景。
第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页