본문 바로가기

해킹과 보안/TryHackme

reverse shell

728x90
경고
본 글은 보안 학습 및 취약점 이해를 목적으로 작성되었습니다.
정보통신망에 대한 무단 침입, 권한 없는 접근, 악성코드 유포 및 시스템 장악 행위는
「정보통신망 이용촉진 및 정보보호 등에 관한 법률,「개인정보 보호법」
등 관련 법령에 따라 형사처벌 대상이 될 수 있습니다.
본문에 포함된 내용은 사전 허가된 테스트 환경(CTF, 교육용 랩)에서만 활용되어야 하며,
이를 악용할 경우 발생하는 모든 법적 책임은 행위자 본인에게 있습니다.

 

Reverse Shell이란?

 : 대상 시스템(타깃)이 공격자 측으로 역방향 연결(outbound) 을 생성하여 공격자가 원격에서 명령을 실행할 수 있도록 만드는 통신 방식이다.
이 방식은 방화벽/NAT 환경에서 인바운드 연결이 차단되어도 아웃바운드 연결은 허용되는 경우가 많다는 점을 악용

 

Reverse Shell의 동작 원리

 

  • 타깃 서버에서 임의 코드 실행(RCE) 이 가능할 때 해당 코드가 외부(공격자)로 네트워크 연결을 시도
  • 공격자 측은 대기 중(리스너) 이며, 연결이 성립되면 쉘을 획득

예시) https://www.revshells.com/

1. reverse_shell 관련 코드를 희생자가 다운로드하거나 희생자 PC에 존재

2. 희생자가 다운로드 또는 실행 시

3. 공격자는 연결을 대기하고 있던 창에서 희생자가 실행한 코드로 희생자 PC에 접속 성공

 

 

Reverse Shell의 유형

1. TCP 기반 Reverse Shell (전통적)
  • 서버가 공격자에게 직접 TCP 연결
  • 단순, 빠름
  • 탐지 쉬움 (비정상 아웃바운드, 포트 시그니처)
2. HTTP(S) 기반 Reverse Shell / C2 방식 (현대적)
  • HTTP/HTTPS 트래픽으로 위장
  • 주기적 비콘(beaconing) 또는 요청-응답
  • 프록시/보안장비 우회에 유리
  •  
  • HTTPS 위장 (정상 웹 트래픽과 구분 어려움) + 주기적 통신(C2) 명령은 서버가 “요청받는 것처럼” 보이게 처리하여 요새 자주 쓰임

 

실습

1. 아래 URL에서 reverse_shell 코드 생성 및 다운로드

https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php https://www.revshells.com/
  • IP, Port는 내  IP, PORT로 생성 또는 변경(포트는 임의로 설정)
  • 희생자의 정보를 볼 PC(공격자 PC의 IP)

 

2. 포트 리스닝

  • 희생자가 파일을 다운로드 받거나 실행시킬때까지 대기

3. 공격을 위해 서버에 파일 업로드

4. 희생자가 웹 서버에서 reverse_shell 파일을 다운로드 받으면 공격 성공 

 

Connection received on 10.49.177.2 55088
→ 웹서버가 웹서버 임시 포트 55088을 이용해서 공격자(나)에게 접속함(reverse_shell 코드 대로 동작함)Linux ip-10-49-183-

5.15.0-139-generic  #149~20.04.1-Ubuntu SMP Wed Apr 16 08:29:56 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
→ 서버 정보

uid=33(www-data) gid=33(www-data) groups=33(www-data)
→현재 사용자 정보

 

 

참고

https://tryhackme.com/room/vulnversity

728x90

'해킹과 보안 > TryHackme' 카테고리의 다른 글

Tryhackme Metasploit: Exploitation  (0) 2026.02.19
powershell  (0) 2026.02.07
nmap 옵션 및 예시  (0) 2026.01.10
systeminfo, ver, set, ping, traceroute, netstat  (1) 2026.01.06
kerberos/NTLM 인증 과정  (0) 2026.01.05