본문 바로가기
분석 TIP/동적분석

EB FE 바이트 패치 활용

by 두유노우컴퓨터 2025. 6. 5.

악성코드 디버깅 시 EB FE 바이트 패치는 매우 유용한 기법으로, 다양한 분석 상황에서 활용할 수 있다. EB FE는 x86 x64 어셈블리에서 무한 루프를 생성하는 2바이트 명령어로, 이를 통해 악성코드의 실행을 일시적으로 정지시키고 분석자가 디버거를 연결하거나 특정 시점에서 코드를 분석할 수 있도록 도와준다.

 

무한 루프를 이용한 디버거 연결 지점 확보

 

악성코드가 CreateProcess를 통해 자식 프로세스를 생성하고, ResumeThread를 호출하기 전에 자식 프로세스의 진입점(Entry Point)에 EB FE를 패치하면, 자식 프로세스는 무한 루프에 빠지게 된다. 이 상태에서 디버거를 자식 프로세스에 연결하면, 원래의 실행 흐름을 방해하지 않고 분석을 진행할 수 있다. 분석이 끝난 후에는 원래의 바이트로 복원하여 정상적인 실행을 이어갈 수 있다.

 

프로세스 할로잉(Process Hollowing) 분석

 

프로세스 할로잉 기법을 사용하는 악성코드는 자신이 생성한 프로세스의 메모리를 언매핑하고, 악성 페이로드를 주입한 후 실행한다. 이때, 주입된 코드의 진입점에 EB FE를 패치하면, 페이로드가 실행되기 전에 무한 루프에 빠지게 되어 분석자가 해당 시점에서 디버거를 연결하고, 주입된 코드를 분석할 수 있다.

 

쉘코드 분석 시 활용

 

악성코드가 메모리 상에 쉘코드를 주입하고 이를 실행하는 경우, 쉘코드의 시작 부분에 EB FE를 삽입하면, 실행이 무한 루프에 빠지게 된다. 이 상태에서 디버거를 연결하여 쉘코드의 동작을 한 단계씩 분석할 수 있다.

 

안티 디버깅 우회

 

일부 악성코드는 디버거의 존재를 감지하여 실행을 중단하거나 다른 경로로 흐름을 변경한다. 이러한 경우, EB FE를 사용하여 특정 지점에서 실행을 멈추고, 디버거를 연결하여 안티 디버깅 기법을 우회하거나 분석할 수 있다.

 


 

EB FE 패치 적용 방법

 

  1. 진입점 확인 : 디버거 또는 도구를 사용하여 악성코드 또는 주입된 코드의 진입점을 확인한다.
  2. 원래 바이트 백업 : 진입점의 원래 바이트를 기록하여 나중에 복원할 수 있도록 한다.
  3. EB FE로 패치 : 진입점의 바이트를 EB FE로 변경하여 무한 루프를 생성한다.
  4. 디버거 연결 : 프로세스를 실행하고, 무한 루프에 빠진 상태에서 디버거를 연결한다.
  5. 원래 바이트 복원 : 분석을 시작하기 전에 진입점의 바이트를 원래 상태로 복원하여 정상적인 실행을 이어갈 수 있다.

 


 

안티 디버깅 기법 주의

 

악성코드가 자체적으로 무결성 검사를 수행하거나, EB FE와 같은 패치를 감지하는 경우가 있으므로, 이러한 기법을 우회하거나 분석할 수 있는 추가적인 방법을 고려하기 때문에 아래 방법도 있다.

 

INT3 패치 기본 원리

 

INT3(0xCC)는 x86/x64 아키텍처에서 소프트웨어 브레이크포인트를 설정하는 명령어이다. 프로그램 코드의 특정 위치를 0xCC로 패치하면, 해당 위치에서 실행이 중단되며 디버거가 이를 감지하고 제어를 획득할 수 있다. 이러한 방식은 디버거의 Just-In-Time(JIT) 기능과 결합하여, 프로그램이 실행 중일 때 자동으로 디버거를 연결하고 분석을 시작할 수 있게 한다.

 

INT3 패치 적용 방법

 

분석 대상 바이너리의 실행 예상 지점에 0xCC를 삽입한다. JIT 디버깅이 활성화된 상태에서 프로그램을 실행하면, INT3 예외가 발생하고 디버거가 자동으로 연결된다.

 

x64dbg 기준 : 설정 -> 환경설정 -> 기타 -> x64dbg를 Just In Time디버거로 설정 체크

JIT 체크로 활성화