본문 바로가기

System/Windows

System/Hacking/고급 리버싱 기술

반응형



리버싱
- 고급 디버깅 기술

  • 조건 브레이크 포인트
    • 레지스터가 특정값일때 브레이크 포인트를 거는 것.
      • WinDEG
        • bp 0x41424344 "j @eax=0x1234568 \;g\"
      • Immunity Debugger & OllDebugger
        • Shift + F2
        • BreakPoint -> Conditional
        • Ctrl+T 에서 Condition is TRUE 
  • 하드웨어 브레이크 포인트
    • 특정 메모리 값을 읽거나 쓸 때 브레이크 포인트를 설정
    • 메모리값 자체에 설정하는 기능
      • 오른쪽 클릭 breakpoint > Hardware, on access > Dword
  • IDA분석 결과 디버거에서 불러오기
    • API 호출에 비해 코드내 어셈블리어로 구해 넣는 컴파일러의 최적화 기능의 경우 분석이 더 어렵다. 이에 ㅇIDA는 패턴분석을 통해 자동으로 Microsoft 심볼 서버와 연동해서 보여 준다.
    • IDA 함수 매핑 정보 Export
    • File > Produc file > Create MAP file 을 통해 심볼과 매핑된 소스 생성.
      • 이정보를 Immuity Debugger
  • 디버거 플러그인 활용
  • Immunity Debugger HideDebug
    • 안티디버깅을 무력화 할 수 있는 플러그인
    • 명령
      • !hidedebug Peb //peb를 이용해 안티 디버깅 무력화
      • !hidedebug All_Debug // 지원하는 모든 안티 디버깅 무력화
  • IDA Pro IDA-Sploiter
    • 대표 상용 플러그인 Hex-Ray, BinDiff, BinNavi
    • Immunity Debugger의 mona와 비슷한 기능 제공
    • ROP 가젯 검색 및 ROP 체인 작성과 관련된 기능들을 제공
    • https://thesprawl.org/projects/ida-sploiter
      • >IDA설치폴더의 plugins 폴더에 복사
        • Plugins 메뉴에 IDA Sploiter 추가됨.
    • 실행을 위해선 디버거를 실행한뒤 멈추고 실행
      • 내장 Local Win32 debugeger 선택후 pause
      • View > open subviews > Modules선택
        • 현재 로드된 모듈들의 SafeSEH, ASLR, DEP 정보를 포함한 다양한 정보 확인 가능
        • 필터 설정으로 ROP체인을 만기위해 적절한 필터링 가능.
          • 우클릭 > Modify filters 
  • 버그 헌팅을 위한 리버싱
    • 소스가 없다면 리버싱을 해야하고, 퍼징을 통해 크래시를 찾았다고 하더라도 공격 가능성 여부를 판단해야함 > Poc
    • 바이너리 코드 리뷰
      • 취약 함수등 버그가 존재할 가능성이 있는 코드부터 함수를 호출하는 루틴을 분석하는 방식
      • 프로그램의 모든 코드를 분석하는 방식
  • 바이너리 디핑
    •  패치된 파일과 패치되기 이전의 파일을 비교하여 패치된 루틴을 중점으로 분석하면 버그 찾기 가능.
    • 유료 툴 BinDiff , 무료 툴 DarunGrim
    • DarunGrim
      • 순서
        1. 원본 파이릉ㄹ IDA에서 로드한뒤 dgf 파일 생성
        2. 패치 파일을 IDA에서 로드한뒤 dgf 파일 생성
        3. DarunGrim 실행 후 위에서 생성한 실행 파일 전후의 dgf 파일 분석
        4. 바이너리 디핑 결과를 참고하여 패치된 부분 분석


반응형