[악성코드분석] 코로나바이러스
안녕하세요.
4월 30일은 치킨을 먹으면서 행복하게 마무리했고,
자고 일어나니 5월 첫 날 새벽이 되었네요.
코로나 핑계로 탱자탱자 놀면서 4월을 흘려버렸는데
5월부터는 3가지정도 계획하고 지켜볼까합니다.
사람이라면여..? 하하
아무리 바빠도 한 달에 한 번정도는 놀러다니면서 말이죠!!
오늘은 4월이 끝나기 전 나타난
시스템파괴형 스크린락커 악성코드를 분석해보려고 합니다.
자기자신을 코로나바이러스라고 부르는데요?
상세분석이라고하면 조금 거창?하고
흐름만 살펴볼까 합니다.
악성코드 MD5 : 09387DAD1341F534AD51966168C0E4AF
blog.alyac.co.kr
알약블로그에 게시도 되었네요!
그럼 G000000000000000!
1. 정적분석
1) 개발언어 및 링커확인

▶ 스마트인스톨메이커는 설치파일이라고 생각하면 될 것 같습니다.
▶ 파스칼계열의 델파이로 작성되었네요.
▶ 터보링커를 사용해서 링킹이 되었구요.
▶ 헤더타입이 PE인 것을 보니 32비트 윈도우즈 실행파일이네요.
▶ ImageBase가 0x400000이며, 시작주소는 0x425468이겠죠?

▶ 총 8개의 섹션으로 구성되어 있으며 .tls섹션도 존재하네요.
2. 디버거를 이용한 분석

▶ 굉장히 간단해 보이죠?
▶ 실제로 들어가보면 무수히 많은 함수들이 기다리고 있답니다.
▶ 하나씩 트레이싱하면서 분석할정도는 아닌 것 같네요.
▶ 순차적으로 분석을 시작해보도록 하겠습니다.
[1] 임시파일의 경로얻기

▶ 임시파일의 경로를 먼저 얻어오는군요?
[2] 새로 생성할 파일의 절대경로얻기

▶ 이전에 2.tmp파일을 만들고 절대경로를 얻어옵니다.
▶ WriteFile()을 이용해서 생성하지 않았을까요?
▶ 궁금하시면 직접 확인해보세요!
[3] 파일열기

▶ 파일을 열어서 핸들이 얻어졌는지 확인하고 핸들을 닫네요.
[4] 파일생성

▶ 디렉터리에서 확인해보면 4.tmp라는 빈 파일을 생성합니다.

▶ 0KB짜리 빈파일이 생성되었군요!!
[5] 파일쓰기

▶ 파일이 있다면 열어서..

▶ 비어있던 파일에 내용을 쓰네요.

▶ 파일에 어떤내용을 적었는지 살짝 엿보면?
▶ 악 내 눈!!! 안과를 가야겠어요!

▶ 위와같은 방법으로 총 4개의 임시파일을 생성하네요.
▶ 보통 이러한 tmp파일은 새로운 코드나 파일을 만들기위해 생성을 하죠!
▶ 그러나 새로운 코드를 만들기 위해서라면 메모리 내에 작성해서 써도 될텐데 말이죠?
[6] allwh.reg 생성

▶ "C:\Program Files (x86)\vb\wifi hacker\allwh.reg"를 생성하네요.
▶ 참고로 .reg파일은 레지스트리 추가/수정/삭제를 위한 파일이랍니다.
(괜한 오지랖 살짝,,>_<)
[7] allwh.reg를 포함한 총 12개의 파일 생성

▶ 오!! 나쁜놈의 자식들이 12개나 생겼네요?
▶ 생성된 방식은 [6]의 allwh.reg와 동일한 방식으로 생성되어 구지 캡쳐는 하지 않았으니 이해해주세요.
[8] allwh.reg의 내용

▶ 우선 연두색으로 작성된 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]에서
윈도우즈 접속 시 보여지는 제목과 내용을 작성합니다.
"legalnoticecaption"="you are infected of corona virus.."
"legalnoticetext"="computertricks2018@gmail.com"
▶ [그림14]와 같이 키와 값의 형태로 작성하려나봅니다.
▶ 아마 나쁜짓을 하고 이 내용을 띄울 것으로 보이네요.
▶ 파란색으로 작성된
[HKEY_CURRENT_USER\Control Panel\Desktop]에서
윈도우 접속 시 설정하는 바탕화면이미지의 위치를 저장합니다.
"Wallpaper"=“c:\\wh\\wh.jpg"

▶ 보라색으로 작성된
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]에서
윈도우부팅 시 자동실행되는 프로그램 목록을 설정합니다.
"r"="c:\\wh\\speakwh.vbs"
"o"="c:\\wh\\antiwh.vbs"
"t"="c:\\wh\\diex.bat"
▶ 위 3개 파일은 아래서 같이 설명하겠습니다.
▶ 분홍색으로 작성된
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]에서
필수프로그램인 explorer의 기능을 최소화합니다.
"StartMenuLogOff"=dword:00000001
"NoDrives"=dword:03ffffff
"NoClose"=dword:00000001
"HideClock"=dword:00000001
"NoViewContext"=dword:00000001
"NoStartMenuPinnedList"=dword:00000001
"NoStartMenuMorePrograms "=dword:00000001
"NoDesktop"=dword:00000001
"NocontrolPanel"=dword:00000001
"NoRun"=dword:00000001
"NoWinkeys"=dword:00000001
▶ 흰색으로 작성된
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]에서
작업관리자 잠금 및 레지스트리편집기를 잠급니다.
"disabletaskmgr"=dword:00000001
"disableregistrytools"=dword:00000001
▶ 노란색으로 작성된
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR]에서
USB포트를 잠궈버리는 설정을 합니다.
"Start"=dword:00000004
▶ 여기까지만봐도 세상 나쁜짓은 다하네요!!
[9] 레지스트리 읽고 쓰기

▶ RegQueryValueEx()를 이용해서
"HKEY_LOCAL_MACHINE"의 "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"에 있는
레지스트리 키값을 얻어오네요.
※ 7ip) RegQueryValueEx는 레지스트리 핸들을 얻어야하기 때문에
RegOpenKeyEx라는 오른팔과 RegCloseKeyEx라는 왼팔과 함께 다닌답니다!

▶ [8]에서 설명한 allwh.reg파일의 내용을 읽은 후
RegSetValueEx()를 이용해서 레지스트리를 추가 및 수정하고 있습니다.
▶ 아직 당황하시긴 이릅니다! 서막에 불과하기 때문이죠!
▶ 이와같이 allwh.reg를 등록하고 나면?
[10] WinExec()
▶ "사랑해도 될까요?"의 가사가 떠오르는군요!
왠일인지 낯설지가 않아요~~~
설레고 있죠~ 내 시스템을 모두 가져간 그대애~~~
조심스럽게~ 얘기할래요~ 용기내볼래요~~~
나 오늘부터 그대 시스템을 망가뜨려볼래요~

▶ wh.bat을 실행시키려고 하고 있습니다.
[11] wh.bat의 내용

▶ [그림13]에서 생성된 나쁜놈의 자식들 12개 중 하나네요.
▶ attrib를 사용해서 "C:\wh"내 모든파일에 대해 읽기전용(-r), 보관(-a), 시스템(-s), 숨김(-h) 속성을 제거합니다.
▶ del을 사용해서 "C:\wh"내 모든파일을 읽기전용도 삭제(/f), 삭제할건지 묻지않고(/q) 싹다 지워버립니다.
▶ 이후 새로 디렉터리를 만들고 7개 파일을 "C:\wh"에 복사, 1개 파일을 "C:\awh"에 복사합니다.
(디렉터리를 구지 구분하는 이유는 아마 역활이 다르지 않을까요?)
▶ 마지막으로 bar.vbs를 실행하네요.
[12] bar.vbs의 내용

▶ 비주얼베이직스크립트 파일 내용은 생각보다 심플하네요.
▶ shell객체를 만들고 bara.bat을 실행시킵니다.
[13] bara.bat의 내용

▶ 열심히 만들었지만 필요한것은 "C:\wh"에 복사해놓았기 때문에 삭제하나 봅니다.
▶ "shutdown -l"은 로그오프를 합니다.
[14] 레지스트리 등록한 자동시작프로그램
▶ [8]과 [그림14]의 보라색부분에서 등록한 3개 파일에 대해서 알아보겠습니다.

▶ "C:\wh\speakwh.vbs"는 "corona virus"를 sapi를 이용해 객체를 만들고 음성으로 출력하고 있습니다.
(윈도우 접속시 자동실행됩니다)
▶ 글을 마무리하고 귀를 씻고 와야겠어요!
(들어보면 아실거라 생각?합니다..하하)

▶ 보이는 것과 같이 explorer.exe 프로세스를 강제로 종료시킵니다.
※ 7ip) taskkill 옵션 중 /F는 "종료하시겠습니까?"를 묻지않고 강제종료를 하며,
/IM의 경우 "이미지파일"을 의미하며 프로세스이름을 적어주면 됩니다.
/PID 옵션을 사용하여 프로세스아이디를 적어주어도 무방합니다.

▶ "모든 파일이 코로나바이러스에 의해 암호화되었다.
아무도 나의 복호화코드없이 파일을 복구할 수 없다.
메일로 연락해서 복호화코드를 받아 입력하라"
라는 내용을 출력하는 inputbox를 생성합니다.
▶ 이 후 복호화코드가 "vb"면 inputbox를 닫고 explorer.exe를 실행시킵니다.
▶ 사실 소름돋는 것은
나의 복호화코드 없이는 복구할 수 없다고 했는데
6라인은 영어단어만 알아도..
[만약(if) pass가 vb(pass="vb")면(then) 종료(exit) 하다(do)..?] 이렇게 해석되지 않나요?ㅋㅋㅋㅋㅋ
여기서 do는 반복문의 시작을 의미하지만 말이죠..
※ 7ip) "explorer.exe"는 윈도우즈에서 GUI를 사용해줄 수 있는 파일이며
이 프로세스가 꺼지면 화면은 검정색으로 변경되고 마우스는 기능을 할 수 없습니다.
3. 실행 시 모습

▶ 윈도우 로그인 시 코로나바이러스에 감염되었다는 내용이 먼저 보입니다.

▶ "vb"를 입력하면 inputbox는 닫힙니다.

▶ 레지스트리편집기와 작업관리자 잠금은 [8]과 [그림14]를 통해서 이미 예견됐죠..
4. 복구방법

▶ 위와 같이 드라이브에 접근이 불가합니다.

▶ 이건 제가 찾은 방법은 아니고, 저보다 많은 경험을 해보신 분께서 알려주셨습니다.
꿀팁이져 하하..

▶ 아마 복구툴로 보이지만 실행시켜보겠습니다.

▶ "vb"

▶ "C:\awh\anti.exe"를 분석해보면 위와 같은 파일을 생성합니다.
▶ 내용은 notepad++에 나온 것과 동일합니다.
위 영상은 [시스템파괴형]코로나바이러스 악성코드를 실행한모습입니다.
'Try Attack > Malware Analysis[basic]' 카테고리의 다른 글
Windows 부트로깅 (0) | 2020.06.13 |
---|---|
Windows 주요프로세스 분석 (0) | 2020.06.10 |
사내 해킹메일 대응훈련 (0) | 2020.02.15 |
[악성코드 분석]드롭퍼/다운로더(2) (0) | 2019.11.14 |
[악성코드 분석] 드롭퍼/다운로더(1) (0) | 2019.11.13 |
댓글