NOTICE



 Angler Exploit을 분석해보도록 하겠습니다.




1. 소  개


 최근 2015년 4월 21일에 클리앙이라는 커뮤니티를 통해 CryptoLocker 랜섬웨어가 유포되는 이슈가 있었습니다. 해당 커뮤니티 사이트에 접속하면 취약점 사이트로 Redirection 되고 취약점 랜딩 페이지에 접근하면서 악성코드에 감염되었던 것 입니다. 이때 취약점 공격 및 악성코드 유포에 사용된 것이 Angler Exploit 입니다. 해당 Exploit이 이용하는 대표적인 취약점은 다음과 같습니다.


[표 1.1.] Angler Exploit이 이용하는 취약점 정보




2. Exploit 분석


2.1. Angler Exploit Landing Page


 해커는 정상적으로 서비스되는 웹 페이지에 악성 스크립트 코드를 삽입합니다. 이로 인해 해당 사이트에 접속할 경우 취약점 Landing Page로 Redirection 됩니다. [그림 2.1.]은 Angler Exploit의 Landing Page 코드입니다.


[그림 2.1.] Angler Exploit Landing Page


 해당 Exploit의 Landing Page Code는 <p> 태그를 이용한 문단과 스크립트로 이루어져 있고 1대1 매칭 됩니다. 쉽게 말해 Page에 존재하는 문단의 수만큼 스크립트가 존재합니다. 그리고 스크립트 별 동작은 거의 동일합니다. 대표적으로 Script_01을 살펴보도록 하겠습니다.

 Script_01은 id가 ‘aVIXfIZWnqCYlTmMwkzzAad’ 인 문단과 Script Code로 이루어집니다.


[그림 2.2.] Script_01 Code


 Script에서는 코드 실행에 필요한 함수 선언이 먼저 이루어집니다.(Script_01에서 선언된 함수는 Script_02, Script_03, Script_04에서도 사용합니다.) 모든 선언이 다 끝나면 Line 118에서 ZMLvFLaP 함수를 호출하는데 이 때 ‘aVIXfIZWnqCYlTmMwkzzAad’ 문단의 값이 파라미터로 들어갑니다. 이 값은 함수 안에서 적절한 연산 과정을 거쳐 복호화되고 Line 91 - 95에서 출력 및 실행 됩니다.

 스크립트는 각각의 기능을 가지고 있습니다. 기능과 역할에 대해서는 따로 나누어 살펴보도록 하겠습니다.



2.2. VA 제품 및 가상화 프로그램 탐지 [Script_01]


 Script_01이 실행되면 다음과 같은 코드가 동작합니다.


[그림 2.3.] VA 제품 및 가상화 프로그램 탐지 코드


 먼저 함수들이 선언되고 Line 95에서 xTrueA와 xTrueV 함수가 호출 됩니다. 이로 인해 pathdata 변수가 생성되고 여기에 암호화된 값들이 들어갑니다. 이 값들은 Line 90의 xTrue_pf 함수 호출 과정에서 복호화 됩니다. (암호화 문자열의 복호화는 [그림 2.5.] Line 42의 xText 함수 호출로 이루어집니다.) [그림 2.4.]는 복호화된 문자열 정보입니다.


[그림 2.4.] 복호화된 문자열 정보


 해당 경로 정보들은 xTrue 함수를 호출할 때 첫 번째 파라미터로 입력됩니다. 그 결과 Line 43에서 코드 추가 및 실행이 이루어지고 성공 여부에 따라 두 번째 파라미터로 들어오는 setDatabase 함수를 호출합니다. 쉽게 말해 감염 PC에 특정 제품들이 있는지 검사하고 확인되면 setDatabase 함수가 호출되는 것 입니다.


[그림 2.5.] VA 제품 및 가상화 프로그램 동작 확인 함수


 아래 [표 2.1.]은 동작 확인 제품에 대한 정보입니다.

[표 2.1.] 동작 확인 제품 정보


 setDatabase 함수는 타깃 제품의 동작이 확인되면 호출됩니다. 이로 인해 Line 19 – 20에서 나머지 문단 값에 False가 들어가고 Angler Exploit은 동작을 하지 않습니다.


[그림 2.6.] setDatabase 함수 코드



2.3. 코드 동작에 필요한 함수 선언 [Script_02]


 Script_02를 실행하면 별 다른 동작을 하지 않고 Script_03과 Script_04의 동작에 필요한 함수를 선언합니다. [그림 2.7.]은 Script_02 실행 시 확인할 수 있는 함수 선언 코드입니다.


[그림 2.7.] 코드 동작에 필요한 함수 선언



2.4. IE 취약점 공격코드 실행[Script_03]


 [그림 2.8.]은 Script_03 코드를 실행하고 그 내용을 출력한 것입니다. God Mode로 알려진 CVE-2014-6332 취약점 공격코드입니다.


[그림 2.8.] CVE-2014-6332 취약점 공격코드


 CVE-2014-6332 취약점은 JAVA Script와 VBScript를 함께 사용합니다. Line 44, 45에서 이들 스크립트가 실행됩니다. Line 5 – 13의 데이터는 JAVA Script와 VBScript가 동작하는 과정에서 필요한 값들 입니다. [그림 2.8.] 코드를 보기 좋게 정리하면 다음과 같습니다.


[그림 2.9.] CVE-2014-6332 취약점 공격코드 정리


 여기서 취약점 발생 및 페이로드 실행 코드는 [그림 2.9.]의 Line 142에서 sub 함수인 “Ij27mVGweVnE7ztQ()” 호출로 이루어집니다. 그리고 동작 과정에서 자바스크립트의 ONZl12g1() 함수 코드가 실행됩니다.


[그림 2.10.] 자바스크립트의 ONZl12g1() 함수 코드 실행


 ONZl12g1() 함수 코드를 간략하게 살펴보면 다음과 같습니다.


[그림 2.11.] ONZl12g1() 함수 코드


[표 2.2.] ONZl12g1() 함수 코드 동작


 ShellCode는 “[NOP Sled] + [ShellCode] + 다운로드 URL 주소 + 복호화키 + [ShellCode] + [NOP Sled]” 로 구성됩니다.



2.5. Flash 취약점 공격코드 실행 [Script_04]


 Script_04 코드를 실행하고 그 내용을 출력해보면 [그림 2.12.]와 같다. Line 21에서 getKolaio(), getTxl(“1”), getData(“1”) 함수를 호출하고 문자열을 완성해서 txt 변수에 저장한 뒤 실행시킵니다.

 만약 Script_01에서 특정 제품의 동작이 확인되면 window.fvOWbauMcjLf1에 false 값이 들어가기 때문에 해당 코드는 동작하지 않습니다.


[그림 2.12.] Script_04 코드 실행 결과


 txt 변수에 입력되어 실행되는 코드는 다음과 같습니다. 플래쉬 취약점을 발생시키기 위한 것으로 코드에 명시되어 있는 URL로 접속하면 CVE-2014-0515 취약점 공격코드가 실행됩니다.


[그림 2.13.] CVE-2014-0515 취약점 공격 Page 접속 코드


 이상으로 '[Exploit 분석] Angler Exploit'에 대한 포스팅을 마치겠습니다.



  1. no picture 2015.07.22 10:01

    비밀댓글입니다

    • no picture BlogIcon itseeyou 2015.07.22 12:59 신고

      안녕하세요~ 비전공자이신가요?? 대단하시네요~
      본인의 실력이 어느 정도인지 파악하는 것이 가장 중요해보입니다.
      그에따라 공부 방향도 달라집니다. 그냥 제 생각을 알려드릴게요~

      1. 수석님이 쓰신 리버싱 핵심원리는 리버싱 초보자들에게 어려운 책입니다. 본인이 어렵게 느껴진다면 추천해드리지 않습니다. 그러나 악성코드 분석하는 사람들에게는 필독서라고 생각하기 때문에 두고두고 유용하게 쓰입니다.
      2. 개인적으로 악성코드 분석을 가장 빠르게 잘 할 수 있는 방법은 직접 프로그램을 만들어보고 분석해보는 것이라고 생각합니다. 대단한 프로그램이 아니더라도 직접 만들어보세요.
      3. 제가 본 책중에서 게일 괜찮다고 생각하는 책이 뇌를 자극하는 윈도우즈 시스템 프로그래밍이랑 리버스 핵심원리입니다. 단 본인의 수준에 따라 이해가 어려울 수도 있습니다.

      공부 열심히 하시고 추가적으로 궁금한게 있으면 물어보세요~
      수고하세요~

  2. no picture 2015.07.22 20:09

    비밀댓글입니다

  3. no picture 2015.07.27 14:34

    비밀댓글입니다

    • no picture BlogIcon itseeyou 2015.07.28 04:15 신고

      몇몇 분들이 너무 당연한 듯이 요구를 하셔서 당분간 샘플 제공은 하지 않기로 했습니다. 죄송합니다.

  4. no picture 2015.11.14 22:20

    비밀댓글입니다

  5. no picture 2016.01.16 04:26

    비밀댓글입니다

  6. no picture 2016.06.30 17:27

    비밀댓글입니다

    • no picture BlogIcon itseeyou 2016.07.01 17:04 신고

      안녕하세요.
      궁금해 하시는 부분에 대해 해결해드리고 싶지만
      단순히 글로 질문을 받고 해결을 해준다는게 쉽지 않습니다.
      이부분 양해부탁드립니다.
      감사합니다.

  7. no picture 2016.07.02 16:21

    비밀댓글입니다

    • no picture BlogIcon itseeyou 2016.07.06 00:32 신고

      안녕하세요~ 질문해주신 것에 대해 간단히 말씀드리겠습니다.
      먼저 시스템이나 웹 해킹이나 어느쪽을 더 대우해주는 것은 없습니다. 학문적으로 어느 분야든 의미가 있다고 생각됩니다. 그리고 운영체제에 대한 이해도가 높다면 리버싱을 하는데 많은 도움이 된다 것은 동의합니다. 나머지 웹해킹에 대해서는 제 전문 분야가 아니라서 뭐라고 답변드리기 곤란하네요. 명확한 답변을 드리지 못했지만 도움이 되었으면 좋겠습니다. 감사합니다.

  8. no picture 2016.08.01 11:49

    비밀댓글입니다

    • no picture BlogIcon itseeyou 2016.08.01 20:08 신고

      안녕하세요.
      죄송하지만 샘플 공유는 어려울 것 같습니다.
      구하기 어려운 샘플은 아니지만 문제가 생겼을 때
      제공자의 입장이 난처해 질 수 있으므로 양해부탁드립니다.