http://noplanlife.com/?p=570


    포렌식 관점에서 바라본 파밍공격(공다팩) 역추적



    작년 회사에서 파밍 공격 피해를 입은 PC를 분석한 경험을 본 포스팅을 통해 공유하고자 한다.

    “파밍 공격” 이라고 구글링을 통해 검색해보면 2009년 자료도 나오는 것으로 보아
    상당히 오랜기간동안 진화해온 공격방법이 아닐까 싶다.

    사실 회사에서 하는 업무 자체가 모의해킹, 사고분석이다 보니
    웹을 통한 임직원 개인 PC의 감염여부에 대해서는 크게 관심을 갖지 않았다.
    (물론 FireEye 장비 운용할 때는 메인 업무이긴 했지만)

    그러던 어느날, 관제센터에서 탐지된 일부 C&C IP가 파밍 공격과 관련있다는 정보를 입수하였고
    이에 대한 피해를 조사하는 과정에서 하드디스크를 조사하게 되었다.

    모든 내용을 공개할 수는 없지만 파밍 공격에 대한 단서를 어떻게 찾아갔는지에 대한
    하나의 예제로 활용되었으면 한다.

     

    분석에 사용된 도구

    Encase 7.0 : 본 사건 분석에서 가장 핵심적인 역할을 해주었다.

    Index.dat Analyzer : IE History를 추적하는데 사용하였다.

    분석환경 : Dell Workstation Xeon 2.0 64GB RAM 1TB SSD / Windows 7 Enterprise

     

    파밍 공격의 개요

    091713_0658_2

    사용자가 특정 웹사이트 접속 혹은 다양한 경로를 통해 악성코드에 감염되면
    Hosts 파일 변조를 통해 공격자가 미리 만들어 둔 가짜 사이트 (위 그림 참조)로 이동하게 되어
    2차 피해를 낳을 수 있는 공격방법이다.

    감염 후 변조된 호스트 파일에는 포털 사이트 뿐만 아니라 국내 대부분의 뱅킹 사이트를 포함하고 있어
    보안에 대한 인식이 부족한 사람의 경우 보안 카드 번호등을 탈취당할 수 있다.

    역시… 모든 해킹의 목적은 “돈”이 아닐까 싶다.

     

    파밍 공격 탐지 – 관제 센터 및 외부 공조 (빛스캔 – Bitscan)

    빛스캔으로부터 아래 2개의 파밍사이트 IP를 입수하였으며
    관제 센터의 모니터링을 통해 6대의 PC가 접속한것으로확인되었다.

    • 파밍 사이트 IP : 126.15.176.111 / 126.12.72.166

    분석 당시 해당 파밍 사이트로의 접속은 불가능 하였으나, 여전히 다른 IP를 통해
    낚시용 사이트를 보여주는 것으로 확인되었다.
    어차피 공격자 입장에서는 IP를 바꿔가면서 공격하면 되므로…
    방어자 입장에서는 늘 불리한 입장에 놓일 수 밖에 없는 현실이다.

     

    감염 경로 추적 및 악성코드 분석과정

    먼저 감염자 PC의 환경은 아래와 같다.

    – 운영체제 : Windows XP / 32bit / Service Pack 여부 미확인

    – 소프트웨어 : JAVA 6 Ver. (Not Updated, IE 8.0.6001.23515)

    보다시피 윈도우 XP + 업데이트가 되지 않은 낮은 버전의 S/W 조합으로 인해
    JAVA나 IE Exploit Kit에 의한 공격에 쉽게 노출되어 있다.

    이제 본격적으로 분석 과정을 알아보자.
    본 과정은 기술적으로 Perfection을 보장하지는 못한다.
    분석자에 따라 다른 접근 방법이 있을 수 있으므로, 각자의 역량과 기호에 따라 분석을 수행하면 되겠다.

    Step 1 : HDD내 의심 파일 검색

    인케이스에서 하드디스크 이미지를 붙이자마자 Root 경로 바로 아래 의심되는 폴더 이름이 발견되었다.
    보통 사용자 애플리케이션 데이터가 설치된 AppData같은 곳을 활용하는 경우가 많은데
    이 경우는 직관적(?)으로 악성코드가 생성되어 있어 시작하는데 어려움이 없었다.

    아래 그림은 발견된 폴더 이름과 폴더 내에서 발견된 의심 파일들이다.

    Cap 2014-07-11 10-12-38-927

    누가 봐도 수상한 냄새가 나는 폴더 이름과 파일명들…
    맨날 이렇게 쉽게만 발견되면 좋으련만… 근래 분석 케이스는 뭐 하나 쉬운게 없는 듯 하다.

    개인적으로 사고 분석에 있어 가장 중요하다고 생각되는 (혹은 퇴근 시간을 결정짓는) 것이 바로
    기준점 즉,  분석의 기준이 되는 시점을 잡는 것이다.

    예를 들어 관제센터도 없고, 외부 정보 공조도 없는 그야 말고 정보의 황무지 상태에서
    사고 분석을 수행한다면, 그 방대한 HDD 디스크에서 어느 시점부터 봐야할지 막막한 경우가 있다.

    운이 좋아서 위 그림과 같이 ‘나 악성코드야’ 라고 말해주는 요소가 있다면 모를까
    아무런 정보가 없다면 분석의 시작부터 난관에 부딪히기 마련이다.

    일단 악성코드 파일이 생성된 시점이 2013년 9월 24일로 확인되었으므로,
    이 시점을 이전으로 하여 사용자가 어떤 행위를 했는지 역추적해본다면
    단서를 쉽게 찾을 수 있을것으로 보인다.

    Step 2 : IE History 추적을 통한 감염 경로 추정

    인케이스를 통해 인터넷 익스플로어 temp 폴더에 저장되어 있던 파일 중
    File Creation Time이 13년 9월 24일로 기록된 것들을 먼저 살펴보았다.

    그 결과 예상했던대로 아래와 같이 특정 웹사이트(악성코드 유포지) 접속을 통해
    사용자 PC가 감염되었을것으로 유추할 수 있는 핵심 파일이 발견되었다.

    02_indexfile

    위 그림의 상단에 붉은색으로 표기된 ye[1].htm 파일의 내용을 보면 iframe 태그가 들어있는데
    여기에 우리가 의심할만한 두가지 요소가 있다.

    첫번째 : index.html 파일은 웹페이지의 메인 페이지에 일반적으로 사용됨에도 불구하고
    특정 하위 폴더에 위치하고 있는 점

    두번째 : iframe 태그의 높이(height)가 0으로 셋팅되어 있어 식별할 수 없게 만든 점

    따라서 위 파일로 부터 얻은 정보(URL 및 생성 시간)를 바탕으로 감염경로를 좀 더 세부적으로
    파악해보기로 했다.

    IE History가 저장되어 있는 Index.dat파일을 모두 추출한 후 Index.dat Analyzer를 통해 분석을 시작했다.

    01_IE_History

    9월 24일 15:27:49에 정확하게 2개의 사이트에 접속한 기록이 남아있었으며
    한 곳은 쇼핑몰, 나머지 한 곳은 택배사 홈페이지였다.

    위에서 ye[1].htm 파일 바로 아래 717번 항목 – leftmenu19[1].gif – 파일이
    “배송조회” 버튼 이미지 였던것으로보아 감염 시나리오는 아마 아래와 같이 정리할 수 있을 듯 하다.

    “해당 쇼핑몰은 이미 악성코드 유포지로 활용되고 있었으며, 사용자가 배송 조회 페이지 요청시
    Exploit Kit에 의해 PC가 감염되었을 것으로 추정됨”

     

    Step 3 :  난독화 된 GondaPack 분석

    iframe 스크립트를 통해 실행된 index.html 파일조각이 아래와 같이 하드디스크에 남아있었다.

    Cap 2014-07-14 00-50-54-102

    난독화된 자바스크립트 코드에 대한 풀이방법은 여기서 다루지 않는다. (내용이 너무 방대함)
    공다팩 난독화 해제에 대한 내용은 최우석님의 블로그에 자세히 나와있다.

    스크립트 상단에 보면 “swfobject.js” 를 통해 플래시 버전 정보를 가져오거나
    자바스크립트 정보, User-Agent정보를 수집하는 코드가 포함되어 있는데, 그 이유는
    나열한 S/W에 대한 버전별 취약점을 이용하여 Exploit 을 시도하기 때문이다.

    아래는 난독화를 해제한 자바스크립트 코드이다.

     

    코드에서 발견되는 특징 중 하나는 여러개의 분기문 (if – else if)을 통해 플래시, 자바스크립트, IE 버전에 따른 Exploit을 시도한다는 점이다.

    해당 감염PC에서는 “Ypzi6.jpg” 파일이 발견되었는데 이와 관련된 코드 영역을 살펴보자

     

    gondad.code 영역에서 “GonbadExx.Ohno.class” 라는 부분을 볼 때 아마도 자바 취약점을 이용한
    Exploit일 것으로 예상이 된다.

    해당 파일을 추출한 후 Java Decomplier를 통해 살펴본 결과는 CVE-2012-0507 취약점을 이용한 것으로
    확인되었다.

    Cap 2014-07-14 11-24-58-828

     

    Step 4 : 악성코드 행위 분석

    Exploit에 의해 “soae.exe”가 실행되면 아래 경로에 3개의 파일이 추가적으로 생성되는데
    각 파일별 역할은 다음과 같다.

    csrss.exe : Windows API 호출, dll 파일 로드

    A0090760.dll (실제 파일명은 CGEZ.dll) : C&C 서버 통신, host 파일 정보 수신

    start.lnk : 시작프로그램에 악성코드 등록

    Cap 2014-07-11 10-12-38-927

    사용자 레지스트리 정보 – ntuser.dat – 파일을 RegRipper를 통해 분석한 결과
    아래와 같이 악성코드가 시작 프로그램으로 등록된 것을 확인할 수 있었다.

    Cap 2014-07-14 11-31-42-822

    동적 분석을 통해 C&C서버와의 통신에 대한 Packet capture 결과 아래와 같이 서버로 부터
    plus.xml (Host 변조 파일에 대한 정보) 을 다운로드 하는 것으로 확인되었다.

    Cap 2014-07-14 11-34-36-627

    그러나 해당 HDD 내에서 plus.xml 파일을 찾을 수가 없어서 MFT Log를 뒤져본 결과
    plus.xml이 아닌 data.mdb라는 파일명으로 저장 되는 것을 확인하였다.

    Cap 2014-07-14 11-36-59-715

    이제 악성코드는 data.mdb파일을 참조하여 Windows 폴더내 hosts.ics 파일을 생성한 후
    정상 hosts 파일은 삭제한다.

    Cap 2014-07-14 11-44-32-349

    hosts.ics 파일은 사용자를 피싱 사이트로 유인할 수 있도록, 국내 포탈 및 뱅킹 사이트에 대한 IP 정보를
    특정 IP로 고정되어 있는 것을 확인할 수 있다.

    Cap 2014-07-14 11-42-05-713

    이외에도 사용자 PC내에서 NPKI (공인인증서) 파일을 검색하여 C&C서버로 전송하는 등
    금전적인 이득을 취하기 위한 다양한 형태의 공격이 이루어지는 것을 확인할 수 있었다.

    Step 5 : 악성코드에 의한 사용자의 피해 여부 및 범위 확인

    위 내용을 통해 해당 사용자는 사이트 접속 후 자바 취약점을 통해 악성코드에 감염된 것을
    확인할 수 있었다.

    마지막으로  해당 PC 사용자가 이로 인한 직접적인 피해를 입었는지에 대한 여부,
    그리고 피해가 발생했다면 그 범위는 어느 정도인지를 확인해야 한다.

    앞서 피해 발생 시점인 9월 24일로 돌아가 파일시스템을 살펴본 결과
    아래 그립과 같이 네이버로 위장한 피싱사이트에 접속한 것으로 확인되었다.

    Cap 2014-07-14 11-54-20-821

    위 기록을 분석하면서 사실 정상 파일인 줄 알고 깜빡 속아 넘어갈 뻔 했으나… 몇가지 요소를 통해
    가짜 사이트에 접속한 것을 알아낼 수 있었다.

    – 아래 그림파일 썸네일을 보면 좌측 상단의 네이버 “뮤직” 글자 중 “뮤”자가 반으로 쪼개져 있다.
    보통 포탈 사이트의 이미지는 기능별로 블락을 구성하여 불러오는게 일반적이다
    (“뮤직” 글자를 통으로 받아오지 글자 자체를 위와같이 반으로 쪼개서 받는 것이 이상함)

    – File Creation Time이 9월 24일 오후인데 네이버 투데이가 5월 23일로 되어 있다.
    (공격자가 5월 23일날 제작한듯 하다;;;)

    – 한국 내 사용자임에도 불구하고 배너가 “중국 배너 광고”로 표시되어 있다.

    이러한 내용을 통해 수집한 jpg 파일 조각들을 모아서 한개의 파일로 만든 결과 아래와 같이
    가짜 네이버 사이트가 완성되었다. 일반 유저라면 구분하기가 쉽지 않을 것이다.

    조각맞춤완성

    해당 사용자는 단순히 www.naver.com에 접속하였지만 이미 hosts파일이 변조되어
    위와 같이 가짜 네이버 사이트로 연결된것을 알 수 있었다.

    또한 네이버 가짜 사이트 가운데 보이는 금융감독원 관련 메시지를 클릭하면
    해당 은행 사이트 (물론 가짜)로 연결되는데, 여기에서 보안카드 정보등의 입력을 요구하여
    실제적인 금융 피해를 입을 수도 있다.

    해당 사용자와의 간단한 인터뷰를 통해 확인한 결과 다행히도 금융 사이트 접속 및
    추가 정보 피해는 없는 것으로 확인되었다.

    하지만 혹시나 모를 2차 피해를 방지하기 위해 모든 계정에 대한 비밀번호 변경 및
    공인인증서 재발급을 권고하였다.

     

    마무리 지으며…

    해당 사용자 PC에는 안랩의 V3 (엔진은 최신 업데이트)가 설치되어 있었으나, 해당 악성코드에 대해
    효과적으로 방어하지 못한것으로 보인다.

    Cap 2014-07-14 12-24-41-976

    9월 24일 최초 감염에도 불구하고 실제 V3 검역소 기록에는 9월 27이 되어서야 해당 악성코드를 탐지하였다.

    또한 DLL 파일과 exploit코드가 담긴 index.htm파일만 탐지했을 뿐 나머지 악성코드에 대해서는
    아래 그림과 같이 추가적인 탐지를 하지 못한 것으로 확인되었다.

    Cap 2014-07-14 12-24-22-123

    사실 언제나 공격자가 앞설 수 밖에 없는 보안의 특수성을 이해한다면 위와 같은 현상은 당연한 것으로
    인식해야 한다는게 개인적인 생각이다.

    다만, 무조건적으로 백신에 의존하기 보다는 Internet Explorer, Adobe 제품군, Java 등
    사용자 PC에 기본적으로 설치되는 S/W에대해 지속적으로 업데이트를 해주는 것이
    위와 같은 피해를 예방하는 지름길이라 본다.

    아무쪼록 일반 유저들도 보안에 대한 인식이 높아져서 금융 사기를 목적으로 한 피해로부터
    조금이나마 벗어날 수 있기를 기대한다.

     

    Posted by beumbae