🎯 목표 설정

팀 근두운 멤버들이 AWS 인프라에서 공격 시나리오를 직접 경험할 수 있도록 공통된 공격 환경을 구성하기로 하였다. 공격 환경은 동일 팀 계정 내에서 VPC를 분리하여 구축하는 것으로 결정하였다. 그리고, 공격에 활용할 서버는 EC2에 Kali Linux GUI를 이용하는 것으로 한다.

Kali Linux는 AWS Marketplace에서 Kali 공식 AMI를 무료로 활용할 수 있으며, 여러 가지 보안 실습 도구를 기본적으로 제공하고 있고, GUI 환경도 지원하기 때문에 가장 적합하다고 판단하였다.

이번 단계에서는 공격 환경 전용 VPC를 구축하고, EC2에 Kali Linux를 설치, 팀원 모두가 Kali Linux GUI에 접근할 수 있도록 구현하는 것을 목표로 한다.

🏛️ 목표 설계 아키텍처

graph TD
    subgraph AD["WHS4_ATTACK Group"]
        AD1["Admin PC</br>(Attacker)"]
    end
    INT(("Internet"))
    SSM["AWS SSM</br>(Systems Manager)"]
    IGW("Internet Gateway")
    subgraph VPC["VPC 10.180.0.0/16"]
        subgraph PB["Public Subnet 10.180.40.0/24"]
            SG["Security Group</br>Inbound 없음</br>Outbound TCP 443 허용"] -.-|"정책 적용"| EC2["EC2: Kali Linux"]
        end
    end
AD1 <-->|"SSM 세션</br>Shell and PortForwarding"| SSM
INT --> SSM
INT <--> IGW --- SG
EC2 -->|"SSM 서비스</br>HTTPS"| IGW

🧑🏻‍🔧 공격자 EC2 설계

공격자 EC2는 팀 근두운 AWS 침해사고 대응 실습 과정에서 모의 해킹을 진행할 주체로 목표 설정에서 정의한 것처럼 Kali Linux GUI를 채택하였다.

우선 EC2에 Kali Linux AMI를 사용하기 위해 팀 근두운 계정 내 AWSMarketplaceFullAccess 권한이 있는 IAM 사용자로 AWS Marketplace에서 Kali Linux를 구독한다. Kali Linux AMI는 무료로 제공되며, 구독을 통해 활성화 하면 사용이 가능하다.

AWS Marketplace Kali Linux AMI(Kali 공식) - https://aws.amazon.com/marketplace/pp/prodview-fznsw3f7mq7to?sr=0-0&ref_=ucaf&applicationId=AWSMPContessa

EC2와 같은 클라우드 환경에서 Kali Linux는 기본적으로 CLI 환경으로 제공된다. 이를 GUI 환경으로 제어하기 위해 VNC를 활용할 것이다.

VNC(Virtual Network Computing)는 RFB 프로토콜을 사용해 다른 컴퓨터의 화면을 실시간으로 공유하고 제어하는 원격 접속 기술로, 로컬에서 EC2의 Kali Linux를 GUI로 접속하는 것을 가능하게 해준다.

일반적으로 VNC는 GUI를 표현해주는 서버와 이를 원격 접속하여 사용하는 VNC Viewer로 구성되어 있다. 즉, Kali Linux GUI 접속을 위해서는 로컬 환경에 별도의 VNC Viewer를 설치해주어야 한다. 그렇게 되면, 공격 실습을 위해 팀원 모두가 개인 PC에 VNC Viewer를 설치해야 하는 번거로움이 발생한다.

이를 해소하기 위해, Viewer 설치 없이 VNC 서버가 제공하는 GUI를 연결할 방법을 찾게 되었고, noVNC 오픈소스를 활용하면 가능하다는 것을 확인하였다. noVNC는 HTML5와 WebSockets 기술을 활용해 별도의 클라이언트 프로그램 설치 없이 웹 브라우저만으로 원격 접속을 지원한다.

따라서, 팀 근두운 프로젝트에서는 TigerVNC와 noVNC를 조합하여 Kali Linux GUI 접속을 구현할 예정이다.

🖥️ Kali Linux GUI 구현 with TigerVNC and noVNC

구분 역할
TigerVNC VNC 서버, Kali Linux 내부에서 가상의 GUI 디스플레이 화면을 생성하고 관리
noVNC 웹 인터페이스(Viewer 역할)

Kali Linux GUI 원격 접속을 구현하는 데 필요한 패키지는 다음과 같다.

구분 역할
kali-desktop-xfce Kali용 Xfce 데스크톱 구성
tigervnc-standalone-server 가상 디스플레이를 만들어주는 VNC 서버
tigervnc-tools VNC 연결 시 암호 설정 등을 지원하는 보조 도구
novnc 웹 브라우저에서 실행되는 VNC 클라이언트
websockify 웹 소켓 통신을 TCP 통신으로 변환해주는 프록시 도구
dbus-x11 Xfce 세션 내부 프로그램 간 메시지 통신 지원