2018-12-10
C++ 소스코드를 이용한 백도어 연결
시스템 종료 , 재시작
1. API를 활용하는 방법
- LookupPrivilegeValue / AdjustTokenPrivileges / ExitWindowsEx
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process
OpenProcessToken(GetCurrentProcess(),
Token_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
// Get the LUID for the shutdown privilege
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privilege[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privilege[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, {PTOKEN_PRIVILEGES)NULL, 0);
// Shut down the system and force all application to close.
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
2. 명령어를 사용하는 방법
- 종료 : shutdown
WinExec("shutdown -h -f -t 0", SW_HIDE);
// cmd창 없이 바로 shutdown
WinExec("명령",SW_HIDE")-->Show Window hide(창을 안보여줌_악성코드)<->SW_SHOW
system("명령")
- 재시작 : reboot
WinExec("shutdown -r -f -t 0", SW_HIDE);
//cmd창없이 바로 재시작
- OS 명령 실행 : cmd [명령어]
- 명령창(cmd.exe)에서 명령어 실행
- cmd.exe에 명령어가 내장되어 있다.
- cmd.exe /c [명령어]
- cmd.exe /k [명령어]
- 프로세스 다루기
- 프로세스 목록 출력 : plist
- 소스코드 : 아래참고
- 프로세스 생성(파일실행) : run [실행파일명]
- 소스코드 : 아래참고
- 프로세스 종료 : pkill [pid]
- 소스코드 : 아래참고
[CLIENT]
입력해야하는 명령어와 반응에 대한 함수
[SERVER}
입력받아야하는 명령어와 그에 대한 반응
SW_HIDE : 창 안보이도록
방화벽 해제
[방화벽해제 소스코드]
실행시 방화벽해제한다는 알람이 뜸
->services.msc에 들어가서 알람 중지
[ services.msc ]
끄기
[ 알림을 끌수 있음 ]
이를 이용해서 소스코드를 만들어서
파일실행시 자동으로 알림을 먼저 끄도록 소스코드 만들어보자
[ Security center과 firewall을 끄는 소스 ]
가장 먼저 실행해야하는 소스코드
방화벽을 내리는게 아니라 악성코드를 예외로 넣음
소스코드
[ regflushfet(hkey) ]
하드에 당장 삽입하기
혹시나 하드에 입력이 안될까봐 코드에 넣어줌
cmd [명령어]
cmd로 c:\파일목록읽기
[SERVER]
[CLIENT]
프로세스를 스냅샷을 찍어서 핸들값을 받아낸다
핸들값을 알려준다.
핸들값으로 스냅샷을 받아낸다
실행파일명, ProcessPID
No comments:
Post a Comment