ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스피어피싱] 10강 쉘코드 디버깅 분석-API 해시
    카테고리 없음 2024. 8. 31. 22:38

    1. 실습

    YARA 룰 매칭 결과

     

    매치된 값들이 실제 쉘코드 어떤 부분에 위치해 있는지 분석한다.

     

    IDA

     

    analyzeme-sc01.01.bin 파일을 IDA를 이용하여 오픈한다.

     

    이렇게 오픈한 파일은 IDA 입장에서는 현재 어떤 형태인지 모르기에 변환을 해줄 필요가 있다.

     

    Edit>Code 또는 단축키 C를 눌러 어셈블리어로 변환한다.

     

    변환

     

    IDA hex view

     

    Hex View에서 매칭된 API 해시값을 검색해보려 했지만 검색 기능을 지원하지 않는다.

     

    그렇기에 기타 Hex Editor를 사용하여 다시 한번 분석대상 파일을 오픈한다.

     

    ExitProcess API 해시

     

    GetLastError API 위치

     

    HexEditor를 이용하여 YARA룰에 의해 매칭된 API 해시들이 실제로 존재하는 것을 확인했다.

     

    분석 결과(analyzeme-sc01.01.bin) :

    • LoadLibraryA(), VirtualAlloc(), HttpOpenRequestA(), HttpSendRequestA() 등과 같은 API가 사용된 것을 확인
    • 이를 통해 유추해볼 수 있는 건, 인터넷에서 특정 파일을 읽어오고 이를 메모리에 할당하는 동작 및 네트워크를 통해 특정 서버(C2로 유추) 또는 도메인과 HTTP 기반 통신을 수행하는 것으로 추정

     

    분석 결과(analyzeme-sc02.01.bin) :

    • 인코딩되어 있는 것으로 추정
      • API 이름이 인간이 이해할 수 있는 조합으로 되어 있지 않음

     

    분석 결과(analyzeme-sc03.01.bin) :

    • URLDownloadToFileA(), GetTempPathA(), WinExec() 등과 같은 API가 사용된 것을 확인
    • 이를 통해 유추해볼 수 있는 건, 특정 URL에서 파일을 다운로드하여 특정 폴더(여기서는 TEMP로 추정)에 저장 후 이를 실행하는 동작을 수행하는 것으로 추정

     

    분석 결과(analyzeme-sc04.01.bin) :

    • 피해 시스템의 임시 디렉토리에 실행 가능한 파일 생성 및 디코딩
      • CreateFileA(), WriteFile(), GetTempPathA(), GetFileSize(), SetFilePointer(), ReadFile(), WriteFile()
        • SetFilePointer(), ReadFile(), WriteFile() 이러한 API가 확인될경우 디코딩 동작을 수행한다고 유추 가능
    • 앞서 생성한 파일의 경로 정보 확보 후 실행
      • GetTempFileNameA(), WinExec()

     

    * HexEditor보다 010 Editor 사용하는게 좀 더 좋을거 같다

    * 솔직히 analyzeme-sc04번 코드는 잘 이해 안감. 

Designed by Tistory.