INT 2E 를 활용한 Native API 호출방법

개요 비교적 최근 있었던 샘플을 분석하며 정리한 내용입니다. 고객사로 부터 악성코드가 접수됐는데, 실행이 시간이 너무 오래 걸려, 자동분석 한계시간을 초과해 분석되지 않는 이슈가 있는 샘플이었습니다. 샘플은 THOR 랜섬웨어, Locky 랜섬웨어의 변종이고 출시된진 수개월이 지났지만 여전히 활발히 활동하는 랜섬웨어 중 하나입니다. Malwares.com 보고서 에서 이번 분석에 사용한 샘플의 해쉬 및 기타 정보를 확인할 수 있습니다. 이런…

How to analyze Delphi

개요 분석을 시작하면 Win32 PE 파일을 가장 많이 분석한다곤 하지만, 이 PE 파일도 컴파일러나 프레임워크에 따라 정말 세분화 되어있습니다. 당장 생각나는 것만 해도 VB, dotNet, C, C++, MFC, Delphi 까지… 풀스택 분석가의 길은 정말이지 멀고도 험하기만 합니다. ELF는 언제 하나요…? 어셈블리어만 볼 줄 알면 분석하는거 아닌가? 하는 접신의 경지에 오른 분석가분들도 계시지만 전 하찮은 미물일…

드래그 안되는 중국어 쉽게 번역하기

개요 분석을 하다보면 중국어로 된 웹사이트 방문기회가 잦습니다. 사실 웹이야 크롬 자체기능을 이용해서 자동번역이 되기에, 번역의 질은 둘째 손 치더라도 일을 진행할 순 있습니다만 문제는 중국어만 지원하는 프로그램에서 발생합니다. 프로그램에 표시된 중국어들은 드래그가 되는 것도 아니고, 네이버에 한땀한땀 그리고 싶어도 글자가 뚜렷하게 보이는 게 아니라 막막하기만 합니다. 우린 분석가잖아요, 리소스에서 뜯어올까요? OCR 기능을 이용할 수…

OLE 파일 포맷

개요 OLE 파일은 각종 워드 문서에서 쓰이는 파일 포맷으로 FAT 파일 시스템과 유사하게 스토리지와 스트림 으로 구성돼있다. 과거부터 한글 워드프로세서나 MS Office 취약점을 공격하는 악성코드들로 인해 문서 악성코드를 접하는 사람이라면 반드시 알아둬야 하는 파일 포맷이기도 하다. 최신 office 파일 포맷은 OOXML 을 사용해 그 중요도가 과거에 비해 많이 떨어졌지만 OOXML 내부에서도 여전히 OLE 파일이 이용되고…

How to analyze ppv in IDA

개요 분석을 하다 보면 COM Object 를 생성하는 함수인 CoCreateInstance() 란 API를 많이 접하게 됩니다. MSDN 은 이 함수를 “특정 CLSID1 를 통해 이와 연관된 초기화되지 않은 오브젝트를 생성하는 함수” 라고 설명합니다. 좀 풀어서 설명하자면, OS 와 기설치된 모듈에 구에받지 않고 어디에서든 동일한 기능을 쓸 수 있도록 지원하는 함수인데요, 쓰고자 하는 기능을 CLSID 를 통해…

AtomBombing – Stage3

개요 Stage2 에서 원격 프로세스의 RW 메모리에 기록한 쉘코드를 ROP 를 이용하여 실행하는 과정을 알아봤습니다. 쉘 코드를 인젝션 하고 실행했으니 이제 그만 잊어버릴 법 한데 아직 문제가 남았습니다. 하이젝한 쓰레드의 원래 동작을 복원하지 않으면 어떤 형태의 충돌이 일어날지 알 수 없기에, 해당 쓰레드를 원상복구 시켜줘야 합니다. 전체 소스코드 3단계. Restoration 복구는 어떤 과정으로 이뤄질까요? 일단…

AtomBombing – Stage2

개요 앞서 Stage1 에서는 AtomBoming 인젝션 기법을 위한 사전작업으로 원격 프로세스에 쉘코드를 쓰는 방법을 알아봤습니다. 쉘코드를 쓰긴 했지만 아직 실행을 시키진 못한 상태이죠. 이 글에선 AtomBominb Stage2 Execution 에 대해 알아보겠습니다. 전체 소스코드 2단계. Execution 물론 코드를 실행시키기 위해선 위해선 RWE 메모리가 필요합니다. 일반적으로 메모리 할당과 접근권한 설정을 함께 하기 위해선 VirtualAloocEx() 함수를 이용하지만 여기선…

AtomBombing – Stage1

한 때 모든 위도우즈 버전에서 돌아가는 막을 수 없는 공격이라며 보안업계를 흔들었던 인젝션 기법 아톰보밍(AtomBombing)을 소개하고자 합니다. 이 기법의 요지는 인젝션에 많이 사용되는 CreateRemoteThread() 나 WriteProcessMemory() 없이도 원하는 프로세스에 실행코드를 주입할 수 있다는 점입니다. 따라서 유저모드 API기반으로 인젝션을 탐지했다면, 많은 부분 우회를 할 수 있습니다. 또한 Win10 에서도 잘 동작한다는 점도 이 기법의 유명세에 한…

Debugging Malicious ASP

악성코드 분석가를 위한 ASP 분석환경 구성 최근 웹서버에 업로드된 악성 ASP 웹쉘파일을 분석할 일이 있었습니다. 다행히 윈도우 분석환경은 마련되 있었기에 ASP 분석을 위한 설정만 추가하면 되어 쉽게 해결할 수 있었습니다. 악성 웹쉘은 보통 PHP나 ASP로 많이 작성돼있습니다. 이번 기회에 ASP를 위한 분석환경 구성법을 문서화하면 좋겠다 싶어 이 글을 작성합니다. 환경구성은 앞으로 아래와 같은 순서로 진행될…

Windows Malicious Registry

레지스트리란 레지스트리는 시스템, 사용자, 프로그램, 서비스, 드라이버 등 PC 운용에 반드시 필요한 정보들을 저장해둔 일종의 설정값의 모임이라 볼 수 있다. 과거에는 .ini 파일을 사용하여 이런 설정 정보를 저장했는데 파일이 여러 곳에 나눠져 있어 한곳에 모을 필요가 있었고, 그에따라 생긴 기능이라고 한다. 흔히 regedit.exe 를 통해접근하는 윈도우 레지스트리는 실제론 하이브 파일에 저장되어있다. 하이브 파일은 여러 폴더에…