달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

리버싱을 위해서 툴을 사용하는 기본적인 순서는 다음과 같다.

  1. 바이너리 분석
  2. 문자열 분석 및 Api와 Event분석
  3. 모니터링을 통한 파일 및 레지스트리, 네트워크 패킷 분석
  4. 디스어셈블러나 디버거를 이용한 분석

첫째로 할 일은 분석할 파일을 PEID와 같은 바이너리 분석 툴로 컴파일러 확인과 패커 여부를 파악한 후에 어떤 언어로 코딩되어 있는지 확인하고, 패커가 있다면 해당 패킹을 풀 수 있는 툴이 있는지 없으면 수동으로 어떻게 풀지를 결정해야 한다.

둘째로 어떠한 문자열들이 들어있는지 대략적으로 살펴보고, 어떤 Api를 사용했는지 주요 이벤트 시점의 위치에 대해서 분석을 해본다.

셋째는 프로그램에서 어떤 파일들을 접근하는지, 어느 위치의 레지스트리를 사용하는지 모니터링을 해본다. 그 외에 외부의 시스템과 어떤 패킷이 오가는지도 확인한다.

넷째로는 디스어셈블링을 통해 얻어진 어셈코드를 분석하거나 디버거로 로드하여 실시간으로 분석해 볼 수 있다.

 

리버싱을 하기 위해서는 디버거 이외에도 알아야 할 툴들이 많으며, 시스템 전반적인 공부들을 해야 한다.

  1. 시스템 모니터링 툴(파일과 레지스트리 변화와 네트워크 상태, 프로세스의 상태를 분석)
    1. Filemon
      1. http://www.microsoft.com/technet/sysinternals/utilities/Filemon.mspx
      2. 어플리케이션이 파일들을 어떻게 사용하는지 실시간으로 모니터링해서 오픈, 읽기, 쓰기, 삭제 등의 상황을 정확히 출력해주는 툴이다.
    2. Regmon
      1. http://www.microsoft.com/technet/sysinternals/utilities/regmon.mspx
      2. Filemon과 더불어 레지스트리를 검사하는 툴로써 어플리케이션이 어떤 레지스트리들을 사용하는지를 실시간으로 모니터링하는 툴이다.
    3. TcpView
      1. http://www.microsoft.com/technet/sysinternals/Utilities/TcpView.mspx
      2. 윈도우에서 네트워크 관련 프로세스가 어떤 포트를 열어서 사용 중인지 모니터링해주는 툴이다.
    4. Procexp
      1. http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx
      2. Windows 작업관리자와 비슷하지만 프로세스의 세부적인 정보를 보여주고, 실시간으로 새로 생성하고, 없어지는 프로세스를 색으로 표시한다.
  2. 디스어셈블러(바이너리 파일을 역으로 어셈블리어로 재구성해준다.)
    1. IDA
      1. http://www.Hex-rays.com/idapro
      2. 바이너리 파일을 역으로 어셈블리어로 재구성해준다.
  3. 디컴파일러(이미 컴파일이 된 바이너리를 역으로 컴파일해주는 툴이다.)
    1. 플래쉬 디컴파일러(sothink SWF Decompiler)
      1. http://www.sothink.com/product/flashdecompiler
      2. 상용프로그램이며, SWF 파일을 디컴파일해서 원래 소스파일인 FLV 파일까지 만들어주며, 액션스크립트를 추출하거나 내부 사운드, 이미지들까지 확인가능하다.
    2. 닷넷 프로그램 디컴파일러(Reflector)
      1. http://www.aisto.com/roeder/dotnet/
      2. .NET으로 제작된 프로그램의 원래 소스를 복원해주는 기능을 가지고 있다.
    3. 델파이 디컴파일러(DeDe)
      1. http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissaemblers/DeDe.shtml
      2. 델파이로 제작된 윈도우 어플리케이션을 디컴파일해주는 프로그램이다.
  4. 메모리 패치(윈도우 운영체제가 사용중인 메모리 값들을 검색해서 원하는 값으로 변경해 주는 기능이 있다.)
    1. 티서치
      1. http://codeengn.com/ReverseEngineering_PDS/1826
      2. 간단하게 메모리 값을 수정한다.
    2. 치트엔진
      1. http://www.cheatengin.org
  5. 바이너리 분석(어떤 패커를 이용해서 바이너리를 패킹했는지, 어떤 언어로 제작했는지 알아낸다)
    1. PEiD
      1. http://www.peid.info
      2. 바이너리 분석 툴 중에서 유명하고, 많은 리버서들에게 사용되는 툴
    2. 리소스해커
      1. http://www.angusj.com/resourcehacker/
      2. 리소르를 분석해야 하는 경우에 사용되는 툴로서 프로그램 내부에서 사용되는 문자열이나 아이콘, 이미지, 폼 구조에 대해서 분석할 때 유용하다.
    3. Strings
      1. http://www.microsoft.com/technet/sysinterals/Miscellaneous/Strings.mspx
      2. 바이너리 내부에서 사용된 문자열들을 보기 좋게 추출한다.
  6. 언패커(프로그램을 압축하거나 보호하기 위해서 사용되는 패커들이 하는 일을 반대로 해주는 툴)
    1. Universal Extractor
      1. http://legroom.net/software/uniextract
      2. 잘 알려져 있는 패킹을 풀어주는 통합 툴
    2. VMUnpacker
      1. http://www.dswlab.com
      2. 중국의 보안업체에서 꾸준히 업데이트를 하고 있어서 기능이 뛰어난 툴
  7. 헥스에디터(바이너리 파일을 수정할 때 사용)
    1. 울트라에디터
      1. http://www.ultraedit.com
    2. Hex Workshop
      1. http://www.Hexworkshop.com
  8. 루트킷 탐지(루트킷을 탐지하기 위한 툴)
    1. GMER
      1. http://www.gmer.net/files.php
      2. 회사 차원에서 제공하는 툴로서 주기적으로 업데이트 되고, 다른 툴에 비해 안정적이다.
    2. IceSword
      1. http://pif.blogcn.com
      2. 중국 개발자가 자신의 블로그에서 배포중인 툴 만큼 기업체에서 제공하는 패턴처럼 자주 업데이트 되지는 않지만, 루트킷 탐지 분야에서는 최고의 툴로 찬사를 받고 있는 툴이다.
  9. 네트워크 모니터링 툴(외부와 어떤 통신을 하고 있는지 확인하는 용도로 사용)
    1. WireShark
      1. http://www.wireshark.org
      2. 무료로 사용할 수 있는 패킷 캡쳐 툴로 다양한 프로토콜로 전송되는 것들을 분석해서 보여준다.
  10. 가상머신(특정한 프로그램들을 실행하는 컴퓨터를 진짜 컴퓨터 같이 만들어주는 소프트웨어
    1. VMWare
      1. http://www.vmware.com
      2. 오랫동안 개발해오면서 성능 및 기능이 다양하고, 가장 많은 주변 장치들을 지원하고 있다.
    2. Virtual PC
      1. http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx
      2. 64비트 지원, Windows Vista 지원, 레거시 제품들의 호환성 문제를 VPC를 이용해 해결하라고 가이드하고 있으며, 하드웨어 가상화도 지원한다.
    3. QEMU
      1. http://fabrice.bellard.free.fr/qemu/
      2. 다른 한 시스템 안에서 개인용 컴퓨터 시스템의 완전한 가상화를 제공하며 자유 소프트웨어이다.
    4. VirtualBox
      1. http://www.virtualbox.org
      2. 공개 가상 PC에 비해 속도가 빠른 편이다.

 

Posted by 타카스 류지
|