Automatic Attack Script Generation: a MDA Approach

이 논문은 사이버보안 교육의 실습 환경 구축 비용과 복잡성을 해결하기 위해, 비공식적인 공격 시나리오 설명을 기반으로 MDA(모델 주도 아키텍처) 접근법을 활용하여 공격 스크립트와 컨텍스트를 자동으로 생성하고 다양한 플랫폼에서 재사용할 수 있도록 하는 방법을 제안합니다.

Quentin Goux, Nadira Lammari

게시일 2026-03-13
📖 4 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

이 논문은 사이버 보안 교육을 위한 해킹 시나리오를 자동으로 만들어주는 새로운 방법을 소개합니다.

기존의 방식은 마치 수공예품을 만드는 것과 비슷했습니다. 보안 전문가가 직접 해킹 시나리오를 구상하고, 이를 실행할 컴퓨터 환경 (가상 네트워크) 을 하나하나 조립하고, 해킹 명령어 (스크립트) 를 직접 코딩해야 했습니다. 이 과정은 시간이 너무 오래 걸리고, 실수가 많으며, 고급 기술이 필요해서 교육용 환경을 만들기 힘들었습니다.

이 논문은 이 문제를 해결하기 위해 "자동화 공장" 같은 시스템을 제안합니다. 핵심 아이디어를 쉽게 풀어서 설명해 드릴게요.

1. 핵심 비유: "레시피"에서 "완성된 요리"까지

이 연구는 해킹 시나리오를 만드는 과정을 요리에 비유할 수 있습니다.

  • 기존 방식 (수공예): 요리사가 "소스를 넣고 볶아라"라는 구두 지시만 듣고, 직접 재료를 고르고, 칼질을 하고, 불 조절을 하고, 그릇에 담는 모든 과정을 일일이 손으로 해야 했습니다.
  • 이 연구의 방식 (자동화 공장): 요리사가 **"간단한 레시피 (해킹 시나리오 설명)"**만 입력하면, 기계가 알아서 재료를 준비하고, 조리법을 설계하고, 최종적으로 **"완성된 요리 (실행 가능한 해킹 스크립트)"**를 만들어냅니다.

2. 어떻게 작동할까요? (MDA 접근법)

이 시스템은 **MDA (모델 주도 아키텍처)**라는 세 단계의 계층 구조를 사용합니다. 이를 건축에 비유해 보겠습니다.

1 단계: CIM (컴퓨팅 독립 모델) - "건축주와의 대화"

  • 상황: 건축주 (보안 교육자) 가 "집을 지으려면 3 층짜리 아파트를 만들고, 엘리베이터를 설치하고, 방은 4 개로 해줘"라고 자연어로 이야기합니다.
  • 작동: 시스템은 이 말을 듣고 "아, 아파트, 엘리베이터, 4 개 방이 필요하구나"라고 이해합니다. 이때 기술적인 세부 사항 (벽돌 재질, 배관 두께 등) 은 아직 고려하지 않습니다.
  • 논문 내용: 사용자가 해킹 시나리오를 간단히 입력하면, 시스템이 필요한 컴퓨터, 네트워크, 해킹 도구들을 자동으로 파악합니다.

2 단계: PIM (플랫폼 독립 모델) - "설계도 그리기"

  • 상황: 이제 건축주가 한 말을 바탕으로 기술 중립적인 설계도를 그립니다. "엘리베이터는 A 층에서 B 층으로 올라가야 한다"는 식의 논리만 담고, "엘리베이터가 어떤 브랜드인지"는 정하지 않습니다.
  • 작동: 시스템은 앞서 파악한 정보를 바탕으로 TOSCA라는 표준 언어로 해킹의 흐름과 인프라 구조를 설계합니다.
  • 논문 내용: 해킹 단계 (예: 스캔 -> 침입 -> 데이터 탈취) 와 이를 실행할 가상 컴퓨터들의 연결 구조를 추상적인 설계도로 만듭니다.

3 단계: PSM (플랫폼 특정 모델) - "현장 시공"

  • 상황: 이제 설계도를 바탕으로 실제 현장에 맞는 자재를 골라 집을 지습니다. "우리 현장에는 '오렌지' 브랜드 엘리베이터만 들어오니까, 그에 맞는 나사와 전선을 쓰자"라고 구체화합니다.
  • 작동: 설계도를 실제 실행 가능한 **스크립트 (명령어)**와 가상 환경 설정 파일로 변환합니다.
  • 논문 내용: 이 시스템은 Ansible이라는 자동화 툴을 이용해, 앞서 만든 설계도를 실제 해킹 명령어로 바꿉니다. 이제 교육자는 이 스크립트만 실행하면 해킹 훈련이 바로 시작됩니다.

3. 구체적인 예시: "SnifAttack (스니프 공격)"

논문의 예시를 들어보면 다음과 같습니다.

  • 시나리오: "해커가 라우터 설정을 해킹해서, 피해자의 쇼핑 사이트 비밀번호를 훔쳐내겠다."
  • 기존 방식: 교육자가 라우터 설정을 어떻게 해킹하는지, 패킷을 어떻게 가로채는지, 비밀번호를 어떻게 확인하는지 모든 코드를 직접 짜야 함.
  • 이 시스템: 교육자가 "라우터 해킹 -> 패킷 가로채기 -> 비밀번호 확인"이라고 입력만 하면, 시스템이 알아서:
    1. 해커용 컴퓨터, 라우터, 피해자 PC, 쇼핑몰 서버를 연결하는 가상 네트워크를 만듭니다.
    2. 각 단계별로 필요한 **명령어 (스크립트)**를 자동으로 작성합니다.
    3. 교육자는 이 결과물을 실행하기만 하면 됩니다.

4. 왜 이것이 중요한가요?

  1. 시간과 비용 절감: 수작업으로 하던 몇 주 걸리는 작업을 몇 분 만에 끝낼 수 있습니다.
  2. 실수 방지: 사람이 직접 코딩할 때 생기는 실수 (오타, 설정 누락 등) 를 기계가 방지해 줍니다.
  3. 재사용성: 한 번 만든 설계도 (모델) 는 다른 플랫폼에서도 쉽게 다시 쓸 수 있습니다. 마치 레고 블록을 다른 모양으로 조립하듯, 해킹 시나리오를 다양한 환경에 적용할 수 있습니다.
  4. 교육의 질 향상: 보안 전문가들은 복잡한 코딩에 시간을 쓰지 않고, 실제 해킹 시나리오와 교육 내용에 집중할 수 있게 됩니다.

요약

이 논문은 **"복잡한 해킹 훈련 환경을 만드는 일"**을 **"간단한 설명서 입력"**으로 바꾸는 자동화 공장을 제안합니다. 마치 요리사가 레시피만 적으면 로봇이 요리를 만들어주듯, 보안 교육자가 해킹 시나리오를 입력하면 시스템이 알아서 실행 가능한 훈련 환경을 만들어주는 것입니다. 이는 사이버 보안 교육의 대중화와 효율성을 크게 높여줄 것입니다.