모의해킹 정의, 수행 이유
모의해킹(PT, Penetration Testing)은 시스템 장비, 네트워크 장비 등 실제 운영중인 서비스를 대상으로 공격자와 동일한 환경에서 여러 해킹 툴을 이용해 내부 시스템에 침투가 가능한지 테스트를 하는 작업이다.
흔히 모의해킹은 침투 테스팅이라고 부르지만 크래킹과 다른 의미를 가진다. 모의해킹은 서로 합의가 된 상태에서 합법적으로 테스트를 하는 작업이고, 크래킹은 악의적인 목적을 가지고 서비스에 영향을 주는 것이다.
매해 기업에서 모의해킹을 하는 이유를 생각해보자. 회사에서 할 것것이 없어서 할까 내 직무와 별개로 실적을 쌓고 싶어서 할까 시스템이 해킹 당하는 것을 보고 싶어서 할까 모의해킹을 하는 이유는 크게 3가지로 분류된다.
첫째, 시스템이 다운되면 가용성 문제로 정상적인 서비스 운영이 되지 않는다. 인터넷에 접속한 사용자가 적은 기업은 괜찮을지 몰라도 금융권, 쇼핑몰, 포털 서비스, 게임 서비스 등은 장애가 발생하면 매출에 영향을 미친다.
둘째, 기업의 이미지가 훼손된다. 랜섬웨어 공격, DDos 공격 등으로 해킹 사고가 발생하여 정상적인 서비스 운영이 되지 않는다. 대부분의 기업들은 해킹 사실을 사용자에게 알리지 않거나 늦게 알려 기존의 고객이 떠나버리는 현상이 발생하고 있다.
셋째, 법적인 의무사항이다. 해킹을 가장 많이 당하는 나라의 1위가 대한민국인데, 반드시 지켜야 하는 법이 없다면 어떻게 될까? 보안에 투자 하지 않을 것이고, 해킹을 당하더라도 은폐하려고 할 것이다. 해킹 사고가 계속해서 발생하자 기존에 없던 법도 생기고 강화되기 시작했다.
생각해보기 |
최근 발생한 해킹 사고는 어떻게 알 수 있을까 |
모의해킹 컨설팅, 수행 표준
모의해킹 컨설팅은 기업과 기업 간의 합법적인 승인을 취득 후 주요 서비스에 대해 공격자가 실질적으로 사용하는 도구를 이용해 취약점을 찾아 내/외부자 관점에서 침투테스트를 시도한다.
이후 발생할 수 있는 위협, 보안 사고를 예방하기 위해 대응책을 제시하는 서비스이다.
생각해보기 |
모의해킹 담당자와 모의해킹 컨설턴트 |
모의해킹 컨설턴트와 기술 컨설턴트 |
모의해킹 컨설팅의 종류 |
모의해킹을 하기 위해 알아야 할 지식 |
취약점 진단과 모의해킹 |
화이트박스 진단과 블랙박스 진단 |
모의해킹 수행 표준(PTES, Penetration Testing Execution Standard)은 모의해킹을 체계화된 방법으로 수행하기 위해 만든 표준으로 7단계로 구성되어 있다.
1단계 : 대상 선정
모의해킹을 수행하기 위해 사전에 고객과 진단 대상을 협의
2단계 : 정보 수집
모의해킹을 수행하기 위한 진단 대상의 최대한 많은 정보를 수집
3단계 : 위협 모델링
조직이 내/외부적인 위협을 목록화
4단계 : 취약점 분석
내부 시스템 침투를 수행하기 위해 자체 취약점을 분석
5/6단계 : 공격
취약점을 이용해 내부 시스템 침투가 가능하다는 것을 증명
7단계 : 결과 보고
최종 보고서 작성 및 대응책 제시
모의해킹 용어
취약점(vulnerability) : 시스템, 소프트웨어, 서비스 등에 존재하는 결함, 개발자가 의도하지 않는 설계상의 오류
익스플로잇(exploit) : 시스템, 소프트웨어, 서비스 등의 취약점을 공격하는 방법 또는 공격 코드, 공격자가 프로그램의 흐름을 제어
익스플로이테이션(exploitation) : 익스플로잇을 하는 행위, 공격 대상 시스템 침투 공격
후속 공격(post exploitation) : 익스플로잇이 성공 후 수행하는 공격, 시스템 점령 후 공격자가 원하는 정보를 획득하려고 시도하는 공격
페이로드(payload) : 쉘코드, 최종 공격 목적 코드, 취약점 공격이 끝난 후 추가적으로 수행하는 공격 코드(원격 명령 실행, 시스템 파괴 등)
리스너(listener) : 연결 요청을 기다릴 수 있도록 해주는 기능, 공격 전 핸들러 설정, 바인드 커넥션(Bind Connection), 리버스 커넥션(Reverse Connection)
세션(session) : 공격자PC에서 희생자PC를 지속적으로 공격하기 위해 만들어 놓은 연결 통로
제로데이(Zero-Day) : 알려지지 않은 새로운 취약점
취약점 증명 코드(PoC, Proof of Concept) : 취약점을 증명하기 위해 만들어 진 증명 코드, 유니버셜 쉘코드 내의 계산기 실행 코드 삽입
악성코드(malware) : 공격자가 원하는 행위를 실제로 수행하는 코드, 독립적인 파일 실행, 메모리 내 프로세스 동작 등
서버 측(server-side) 공격 : 클라이언트 개입 없이 서버 측 공격, 전통적인 공격 방식
클라이언트 측(client-side) 공격 : 클라이언트가 개입하여 수행하는 공격, 웹 브라우저, Adobe, Office 등, 드라이브 바이 다운로드(DBD, Drive-By-Download)
로컬 익스플로잇 : 로컬 상에서 실행하는 익스플로잇
원격 익스플로잇 : 원격 상에서 실행하는 익스플로잇
Metasploitable을 이용한 모의해킹
메타스플로잇테이블(Metasploitable v2)은 취약한 환경이 구축된 오픈 소스 우분투(Ubuntu) 운영체제이다.
취약한 서비스들이 다수 포함되어 있어 메타스플로잇 프레임워크(MSF, Metasploit Framework)를 이용해 침투 테스트, 취약점 분석, 공격 코드 개발 등이 용이하다.
생각해보기 |
모의해킹을 테스트 해볼 수 있는 것이 어떤 것이 있을까 |
메타스플로잇테이블 v2로 어떤 것을 테스트 해볼 수 있을까 |
메타스플로잇테이블 v2와 v3의 차이 |
메타스플로잇 프레임워크로 무엇을 할 수 있을까 |
모의해킹을 수행하기 위한 대상은 담당자로부터 메타스플로잇테이블 운영체제의 아이피 주소를 전달받았다고 가정한다.
생각해보기 |
고객이 현재 서비스 중인 사이트가 무엇인지 모르면 어떻게 할까 |
진단 대상의 범위를 제대로 선정하지 않으면 어떻게 될까 |
각 서비스 별 진단 기간은 어떻게 잡아야 할까 |
잘 알려진 포트, 서비스 버전, 운영체제 종류, 커널 버전 등의 정보를 획득한다.
생각해보기 |
기업의 위치, 조직도, 제품, 관계사, SNS, 이메일 주소 등 (사이트, maltego) |
잘 알려진 포트, 운영 중인 서비스 및 버전, 서버 종류, 커널 버전, 장비 등 (NSE, SHODAN, whois) |
무선 네트워크, 물리 보안 등 (WireShark) |
호스트 대역 식별, 과거 사이트 개인정보, 구글 해킹 (netenum, archive, 구글 검색을 이용한 해킹 방어) |
정보 검색을 이용해 특정 버전에서 발생한 취약점이 존재하는지 확인하고, 자동화 도구를 이용해 특정 버전에서 발생한 취약점이 존재하는지 확인한다.
생각해보기 |
해당 서비스의 취약점 존재 유무 확인 방법 (정보 검색, 자동화 도구) |
공격 코드 얻는 방법 |
공격 코드를 메타스플로잇 프레임워크로 적용하는 방법 |
공격 모듈을 지정하고, 공격 명령을 내리면 대상 시스템과 세션이 맺어진다.
생각해보기 |
메타스플로잇 프레임워크에서 모듈 검색 시 데이터베이스 초기화 방법 |
메타스플로잇 프레임워크에 기본적으로 설정되어 있는 페이로드 |
해당 모듈에 설정되어 있는 페이로드 |
공격을 했는데 일반 사용자의 권한일 때 |
후속 공격 단계에서 무엇을 할까 |
vsftpd 2.3.4 버전의 원본 파일 해시 값을 비교 후 사용하거나 vsftpd 2.3.4 이외의 버전을 사용한다.
생각해보기 |
결과 보고서에 어떤 내용이 들어갈까 |