virtualallocex 예제

참고 : 모든 코드 예제는 여기에서 액세스 할 수있는 비주얼 스튜디오 프로젝트 에서 내 Github 프로필에서 찾을 수 있습니다 : https://github.com/proteansec . [1] CreateRemoteThread 기능, 에서 액세스 할 수 있습니다 http://msdn.microsoft.com/en-us/라이브러리/윈도우/데스크탑/데스크톱/ms682437(v=vs.85).aspx. . . 이 값은 MEM_RESERVE 및 다른 값과 함께 사용해야 합니다. 우리는 여기에 VirtualAlloc의 4 번째 히트 후 메모리에로드 된 압축되지 않은 파일을 덤프 할 수 있습니다. 우리는 CTRL + G를 누르고 “버추얼 알록”을 입력하여 버추얼 알록 API를 볼 수 있습니다 : . 지정된 예약된 메모리 페이지에 대한 메모리 요금(전체 메모리 크기 및 디스크의 페이징 파일)을 할당합니다. 또한 이 함수는 호출자나중에 처음에 메모리에 액세스할 때 내용이 0이 되도록 보장합니다. 가상 주소가 실제로 액세스되지 않는 한 실제 실제 페이지는 할당되지 않습니다. [5] createRemoteThread를 사용하여 보다 완전한 DLL 주입 솔루션, http://www.codeproject.com/Articles/20084/A-More-Complete-DLL-Injection-Solution-Using-Creat.

https://attack.mitre.org/wiki/Technique/T1093 https://github.com/m0n0ph1/Process-Hollowing/tree/master/sourcecode/ProcessHollowing http://www.autosectools.com/process-hollowing.pdf 프로세스 를 비우면 공격자는 다음을 사용합니다. API: 이 문서의 이 섹션에서는 프로세스의 주소 공간에 DLL을 삽입할 때 사용할 모든 함수를 살펴보겠습니다. 먼저 아래에서 볼 수 있는 프로그램의 전체 소스 코드를 제시해 보겠습니다: MEM_RESET을 사용하면 VirtualAlloc에서 오류를 반환하고 메모리 범위가 파일에 매핑됩니다. 공유 뷰는 페이징 파일에 매핑된 경우에만 허용됩니다. procID 변수를 프로세스의 PID인 2720으로 변경했습니다. 이것이 올바르지 않으면 프로그램이 존재하지 않을 수 있는 다른 프로세스에 DLL을 주입하려고 시도합니다. 이러한 경우, 프로그램은 가장 확실하게 실패합니다. 프로그램의 PID를 변경할 때 프로그램을 다시 컴파일하고 실행해야 합니다.

이 프로그램은 putty.exe 프로세스에 DLL을 삽입하고 모든 것이 성공적으로 완료되면 다음을 표시합니다: malloc 및 LocalAlloc와 같은 다른 메모리 할당 함수는 릴리스될 때까지 예약된 메모리를 사용할 수 없습니다. 이미 커밋된 페이지를 커밋하려고 해도 함수가 실패하지 는 않습니다. 즉, 각 페이지의 현재 약정 상태를 먼저 결정하지 않고 페이지를 커밋할 수 있습니다. lpAddress가 영토 내의 주소를 지정하는 경우 flAllocationType은 MEM_COMMIT여야 합니다. CreateRemoteThread 함수를 사용하여 프로세스의 주소 공간에 DLL을 삽입하는 방법을 살펴보겠습니다. 공격자는 이 메서드를 사용하여 프로세스의 IAT 가져오기 테이블을 연결하여 프로세스/사용자에 대한 유용한 정보를 수집할 수 있습니다. 이제 메모리 팬에 함수에 의해 채워질 빈 공간이 있습니다. 하드웨어 중단점을 설정하여 무슨 일이 일어났는지 확인할 수 있습니다.

Posted in Uncategorized