요즘에 makop라고 이름붙여진 랜섬웨어가 유포중이다.
ASEC 팀의 관련 글을 보고 분석해봐야지 생각이 들어 분석해봤다.
- ASEC 팀의 분석 글
일단 분석 대상은 위 글에 나온 이력서_항상무었을하던지~ 샘플로 정해 시작했다.
예전부터 악성코드에서 많이 보이듯, 정적 분석을 피하기 위한 목적으로 실제 사용하는 함수들을 미리 로드해둔채로 프로그램을 동작시키는 것이 아닌, 프로그램 실행에서 처음에 사용할 함수들을 로드한다.
랜섬웨어 행위 중에 레지스트리도 건드리기 때문에 그 목적으로 레지스트리의 현재 크기와 같은 정보를 얻어온다.
이후에 현재 실행되고 있는 시스템의 언어가 무엇인지를 확인한다.
현재 시스템 내에서 실행중인 프로세스들에 대한 정보도 알아오며, 해당 프로세스와 관련된 첫번째 모듈의 정보를 얻어온다. 현재 실행중 프로세스의 경우에는 암호화 행위 전 해당 프로세스 삭제의 목적인 것으로 보이는데, 모듈 관련 정보는 왜인지 아직 모르겠다.
이후에 현재 시스템의 윈도우 버전을 알아온다.
이 앞의 행위들을 수행한 이후에, 향후 수행할 암호화 행위를 위해서 암호화와 관련된 기능을 로드한다.
시스템 윈도우 디렉토리를 알아온다. 물론 dll 로드를 위한 목적도 있을 것으로 보인다.
현재 프로세스, 즉 악성코드가 실행중인 경로에 대해서도 특정 함수를 통해 얻어오고 윈도우 상의 특수 폴더(바탕화면, 즐겨찾기 등)의 경로도 얻어온다.
이후에는 레지스트리를 건드리기 시작한다. 먼저 자동실행과 관련된 Run 키를 열어서 해당 레지스트리에 악성코드를 세팅하고, 시스템의 재부팅시에도 악성코드가 자동실행되도록 설정한다.
이후에는 레지스트리로부터 ProductId를 얻어온다. 아마 이 ProductId도 윈도우와 관련된 정보를 식별하기 위함인 것으로 보인다.
SystemDrive 환경변수도 얻어온다.(암호화에 사용해야하기 때문에)
그 환경변수로부터 얻어온 정보로 드라이브를 식별한다. 이후, 식별한 드라이브가 어떤 유형인지 등의 정보를 알아낸다.
중간중간 랜섬웨어 자체의 정상적인 실행을 위해서인지는 모르겠으나 프로세스의 종료 상태도 점검한다.
여기까지의 행위들이 모두 정상적으로 수행되면, 자신과 똑같은 프로세스를 하나 생성하는데, 인자값이 다르게 들어가서 이 프로세스에서 암호화와 같은 행위들이 수행된다.
해당 프로세스에서는 가장먼저 중복실행 방지를 위해서 뮤텍스를 만든다.
이후 논리 드라이브를 싹 다 가져오고, 해당 드라이브의 타입을 검사한다.
그리고 CreateFile 함수를 이용해서 드라이브의 가장 윗 단을 읽기/쓰기 모드로 연다.
DeviceIoControl 함수를 이용해서 지정된 볼륨(여기선 C드라이브)의 물리적 위치을 가져온다.
이후, 암호화 관련된 정보를 해당 프로세스에서 불러온다.
그리고 암호화 이후에 시스템에서의 복구방지를 목적으로 윈도우에 존재하는 볼륨 섀도우 카피본을 삭제하는 명령어를 cmd를 이용해 실행한다.
이후 암호화는 생성된 프로세스 안의 쓰레드를 하나 더 생성해서 그 안에서 이루어진다.
맨 윗단부터 파일을 찾아가면서 해당 파일들을 오픈하고 Write 파일을 이용해서 암호화된 값을 덮어씌운다.
파일을 암호화하고나면 암호화된 파일은 다음과 같은 형식으로 이름이 변경된다. 원래파일명.[랜덤8글자(알파벳+숫자)].[akzhq412@protonmail.com].makop
그리고 이후에는 InternetOpen 등의 함수를 이용해서 iplogger.org 사이트에 접속을 시도하는데 해당 사이트는 IP를 이용해서 위치를 추적해주는 서비스 사이트이다. 아마, 피해자의 국가와 위치를 추적하기 위함으로 판단된다.
'Analysis' 카테고리의 다른 글
36. Threat graph(North Korea) (0) | 2020.11.07 |
---|---|
35. Maze ransomware (0) | 2020.08.13 |
33. Remcos (0) | 2020.04.16 |
32. Lazarus Graph (0) | 2020.03.24 |
31. Lazarus's Ratankba (0) | 2020.01.21 |