목록분야/Reversing (3)
모두의 dream
공부를 하며 정리한 내용으로 잘못된 내용이 있을 수 있습니다. 악성코드를 분석하다 보면 핸들과 관련된 코드들이 항상 나온다. 이번 기회에 제대로 어떤 기능인지 알고 넘어가고자 관련된 내용들을 정리했다. 1. 프로세스와 커널 현재 실행중인 프로그램이 프로세스. (실행중이지 않은 상태를 프로그램이라고 함) 흔히 알고 있는 메모리 구조(Code, Data, Heap, Stack)는 이 프로세스마다 독립적으로 존재한다. 프로세스안에 더 많은 정보(값)들이 들어갈 수도 있지만 일단 아는 선에서 그림으로 표현했다. 여기서 들었던 의문점: 커널은 스택 위쪽에 있다고 공부했는데, 그럼 커널도 프로세스마다 존재하는건가?? 그렇지 않다. 유저영역에서 프로세스들이 돌아가고 있고, 커널영역에 커널이 단독으로 자리잡고 있다. ..
공부를 하며 정리한 내용으로 잘못된 내용이 있을 수 있습니다. 이번에 우크라이나·러시아 전쟁에서 사용된 HermeticWiper 악성코드를 분석하다가 윈도우 권한과 관련된 코드가 있어서 공부겸 정리해봤다. 아래 코드는 윈도우 전원을 종료 시키는 코드다. #include #include char* GetLastErrorAsString() { DWORD dwLastError = GetLastError(); if (0 == dwLastError) return NULL; char* szMessageBuffer = NULL; size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_..
공부를 하며 정리한 내용으로 잘못된 내용이 있을 수 있습니다. DLL Injection: 실행중인 다른 프로세스에 특정 DLL을 강제로 삽입하는 것. DLL Injection의 전체적인 흐름. 1. 타겟 프로세스를 잡는다. (메모장, 계산기 등등) 2. DLL과 DLL injector를 제작한 후, DLL injector를 이용하여 DLL을 타겟 프로세스에 삽입한다. DLL 에는 Injection 후 행동할 코드가 들어가고, Injector에는 단순히 Injection을 시키기 위한 코드가 들어간다. DLL injection 환경 (+제작환경) Windows11 (64bit) visual studio 2019, 문자 집합: 멀티바이트 집합, x64 컴파일 DLL 제작 // Injdect_DLL.dll #..