BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
2025-12-08 / 호스트기반모의해킹 · 29
리버스 쉘 업그레이드
1. 쉘 업그레이드 필요성
1.1 덤 쉘(Dumb Shell)
nc(Netcat)로 받은 기본적인 리버스 쉘은 기능이 매우 제한적이다.
- 제약 사항:
Tab 자동 완성 불가.
Ctrl+C 누르면 쉘 자체가 종료됨(가장 치명적).
vi, ssh, mysql 등 인터랙티브(Interactive) 프로그램 실행 불가.
- 화살표 키(명령어 히스토리) 사용 불가.
1.2 Full TTY Shell
SSH로 접속한 것과 동일한 수준의 완전한 터미널 환경을 구축하는 과정이다. 이를 통해 안정적인 작업 환경을 확보해야 한다.
2. 업그레이드 절차(Step-by-Step)
아래 과정은 반드시 순서대로 진행해야 한다.
Step 1: Python pty 모듈을 이용한 쉘 생성
타겟 시스템에 Python이 설치되어 있다면, pty 모듈을 이용해 가상 터미널을 생성한다.
python3 -c 'import pty; pty.spawn("/bin/bash")'
python -c 'import pty; pty.spawn("/bin/bash")'
(이 시점에서 프롬프트가 bash-4.2$ 처럼 바뀐다.)
Step 2: 백그라운드 전환 및 로컬 터미널 설정
Ctrl + Z 를 눌러 리버스 쉘을 백그라운드(Background)로 보낸다.
- 로컬 터미널 설정을 변경하여 입력값을 그대로 리버스 쉘로 전달하게 한다.
stty raw -echo; fg
stty raw -echo: 로컬 터미널의 라인 처리 및 에코를 끈다(모든 키 입력을 원격으로 전달).
fg: 백그라운드에 있던 쉘을 다시 포그라운드로 가져온다.
Step 3: 쉘 초기화 및 환경변수 설정
fg로 돌아오면 화면이 깨지거나 입력이 안 보이는 것처럼 보일 수 있다.
reset 입력 후 엔터.(터미널 초기화)
- 환경 변수 설정:
export SHELL=bash
export TERM=xterm-256color
- (옵션) 창 크기 맞추기:
- 로컬에서
stty size로 크기 확인 후, 타겟에서 stty rows [행] cols [열] 설정.
3. 결과
이제 Ctrl+C를 눌러도 쉘이 죽지 않고 현재 실행 중인 프로세스만 종료되며, vi 편집기나 Tab 자동 완성을 자유롭게 사용할 수 있다.
실무나 CTF에서 리버스 쉘을 얻자마자 가장 먼저 수행해야 하는 습관이다.