리버스 엔지니어링/연구

NullSoft GandCrab 4.3 (Thread Injection)

뿔맨 2018. 10. 9. 00:14
반응형
이번 분석 건은 최근 9월 달에 NullSoft 설치파일 형태로 유포하는 GandCrab 입니다.
해당 샘플에서 CreateRemoteThread 함수를 사용하여 자식 프로세스에 Thread를 인젝션하며 이 과정에서 알아낸 것을 기재합니다.

안랩블로그 - ' http://asec.ahnlab.com/1160 ' 를 참고하였습니다.

이번 분석 건은 악성코드 분석은 아니며 생성된 Thread를 어떠 한 방법으로 분석하였는지를 알아 볼 것입니다.
아래 그림은 악성코드 동작 방식을 간단히 그림으로 그려보았습니다.


calumny.exe 를 실행시키면 Temp 폴더에 bin, dll, jpg 등을 드랍하지만 특별히 적지는 않았습니다.

calumny.exe 가 msiexec.exe (정상프로그램)을 suspned 모드로 실행시키는 것을 볼 수 있습니다.

해당 프로세스의 Threads 탭을 보게되면 현재 1개의 Thread가 실행 중임을 확인할 수 있습니다.

calumny.exe 를 분석을 진행 하다보면 Thread Injection을 하기위해 자식 프로세스에 특정 메모리를 작성하는 것을 확인할 수 있습니다.

CreateRemoteThread 함수를 사용하여 자식프로세스에 원격으로 Thread를 생성합니다.

이제부터 Thread 디버깅을 하기위해 아래 그림과 같이 셋팅이 필요합니다.

설정 - 환경설정 -  스레드 진입점 체크 해줍니다.

디버거를 하나 더 켜서 msiexe.exe 를 attach 후 F9를 눌러 Running 상태로 바꿔줍니다.
그리고 CreateRemoteThread를 호출하면 자동으로 Thread가 잡히면서 디버깅이 가능해집니다.

이러한 식으로 BP가 자동으로 셋팅되면서 분석을 할 수 있게되었습니다.
그러나 해당 샘플은 Thread를 총 3번 Injection을 합니다.

아래 그림은 2번 째 Thread 입니다.


첫 번째와 두 번째는 GandCrab을 사용하기 위해 dll 및 함수들을 로드하는 것으로 추정됩니다.
아래 그림은 마지막 세 번째 Thread 입니다.

해당 Thread에서 GandCrab 실행파일을 복호화 및 실행하는 것을 확인할 수 있었습니다.
세 번째 Thread를 분석하기 전에 현재 Thread가 2개이므로 (첫 번째 Thread는 CreateRemoteThread 후 바로 프로세스가 종료됨)
설정이 필요합니다.  ' 스레드 탭 ' 에서 두 번째 Thread를 일시중지를 해야 됩니다.

두 번째 Thread를 일시중지 하였으니 분석을 쉽게 진행할 수 있습니다. (일시중지를 하지 않으면 현재 실행 중인 모든 Thread를 왔다갔다 하며 분석에 어려움이 있습니다.)

해당 반복문에서 GandCrab PE를 복호화 합니다.

덤프를 떠서 String을 보면 아래와 같이 GandCrab 특정 문자열을 볼 수 있습니다.


계속해서 Call을 따라가주면 아래와 같이 GandCrab EP를 볼 수 있습니다.


감사합니다.


반응형

'리버스 엔지니어링 > 연구' 카테고리의 다른 글

GandCrab 4.3 Javascript 분석 -2  (0) 2018.09.16
Code Injection 분석 연구  (0) 2018.08.08