https://www.ahnlab.com/ko/contents/content-center/35578

 

AhnLab | 콘텐츠 센터

 

www.ahnlab.com


Notepad++의 기본 Plugin인 "mimeTools.dll"가 변조돼 악성코드가 유포된 정황이 확인되었다. 

특정 버전의 Notepad++ 패키지 설치 파일에 포함되어 정상 패키지 파일로 위장한 악성코드는 사용자가 Notepad++를 실행하기만 해도 설치된다. 

 

mimeTools

  • 베이스64(base64)등의 인코딩 기능 수행하는 모듈
  • notepad++을 실행시키면 자동으로 로드됨.
    • 공격자가 이 점을 악용. 
    • 일종의 DLL 하이재킹(Hijacking) 기법 사용한 것으로 확인

 

악성코드 유포 방법

  1. 공격자는 mimeTools.dll에 암호화된 악성 셸코드&복호화 및 실행 코드를 추가. 
    • certificate.pem 파일에 악성 셸 코드가 포함되어 있음
  2. 악성 패키지에도 기존의 mimeTools.dll에서 제공하는 기능들은 그대로 구현되어 있음

 

 

악성코드 실행 흐름

  1. Indirect Syscall
    • 실행 시점에서 안티바이러스 제품 우회를 위해 indirect syscall 기법을 사용
    • jmp문을 이용해 syscall로 분기
      • 해당 syscall 호출하기 위해 필요한 인자 값을 직접 세팅
      • ntdll을 후킹해 Natice API 모니터링하는 안티바이러스 제품을 우회
    • 복호화된 셸 코드는 최초 실행된 notepad++ 프로세스 영역에 생성됨
    • certificate.pem 파일(악성코드를 포함한 파일)의 바이너리는 Crypt32.dll, BCrypt.dll 모듈을 사용해 셸코드로 바뀜
    • 이후 셸코드 생성된 영역에 실행 권한 부여, jmp문을 통해 실행 흐름이 전환됨
  2. BingMaps.dll 변조
    • BingMaps.dll의 EntryPoint를 변조하고 Export 함수인 GetBingMapsFactory()의 내부 코드를 셸코드로 덮어 씌움
    • BingMaps.dll->GetBingMapsFactory()로 실행 흐름이 전환됨
      • 1. NtCreateThreadEx()
        2. NtGetContextThread()
        3. NtSetContextThread() : Set RIP
        4. ResumeThread()
    • 스레드 생성 이후 NtGetContextThread() 이용해 해당 스레드의 레지스터 값 가져옴
    • RIP 레지스터를 GetBingMapsFactory로 세팅 
  3. 변조된 GetBingMapsFactory()
    • 이전 과정(2번 과정)에서 셸코드로 덮어씌워짐
    • VM 등의 분석 환경 인식해 프로세스 종료하는 과정이 존재, explorer.exe에 스레드를 삽입
    • 런타임에 실행 중인 모든 프로세스 이름을 대상으로 한 글자씩 Shift, XOR 연산해 해시값 생성
      • 생성된 해시값은 특정 프로세스의 존재 여부 확인에 사용됨
      • 해시 일치할 경우 추가 악성 행위 하지않고 종료
    • explorer.exe 프로세스 만나면 이후 악성 행위에 필요한 정보 (PID) 추가로 수집해 보관
  4. Explorer.exe (Injected)
    • 여기서부터 본격 악성 행위 시작.
    • 공격자는 C2에 접속해 추가 셸코드 다운로드 및 실행
    • C2와 통신하는 과정에서 사용되는 문자열->특정한 함수->URL
      • C2 URL 문자열은 홀수 번째의 문자만 이어붙여 획득 가능
    • 사용자 PC에서 수집한 정보들이 베이스64로 인코딩돼 공격자에게 전달됨
    • C2 통신 이후 response에서 특정한 문자열의 offset 찾음
      • 해당 offset에서 추가 셸코드 복호화해 해당 셸코드로 jmp
    • 해당 C2는 분석 시점에 워드프레스 로그인 파일로 확인됐고 최초 유포 당시엔 외형이 Wiki 사이트로 확인돼 "위키로더(Wiki Loader)"라는 이름 붙음

+ Recent posts