dll injection 예제

이제 반사 DLL 주입 방법을 확인하자 : 당신은 더 나은 시간에이 게시 할 수 없습니다. 나는 DLL 주입을 사용하는 최근 몇 가지 악성 코드를 리버스 엔지니어링했습니다, 나는 종류의 그것이 어떻게 작동하는지 이해하지만, 이 게시물은 정말 나와 함께 클릭. 좋은 작품! 다음 데모는 다른 프로세스를 감염시키기 위해 반사 DLL 주입 스타일 방법을 사용하는 실행 기능인 Phage라는 다른 PoC 프로그램을 보여 주었습니다 (따라서 DLL에 의존하지 않음). 여기 32 비트 윈도우 7에서 cmd.exe를 감염하기로 결정했습니다 (기능 동적으로 검색 된 API를 증명하기 위해) 특정 기능을 사용하지 않도록 설정합니다. 도구는 옵션 2에서 이러한 문제 중 일부를 추상화하는 데 있습니다. 우리는 처음부터 기본 주입을 구현할 수 있기 때문에, 우리는이 게시물에서 옵션 1을 검사합니다. 먼저 기본 DLL 주입과 관련된 워크플로를 살펴보겠습니다. 맬웨어는 호스트 프로그램(예: DLL 주입)에 코드를 삽입하는 대신 프로세스 비우기라는 기술을 수행할 수 있습니다. 프로세스 비우는 맬웨어가 대상 프로세스의 메모리에서 합법적인 코드를 매핑 해제(중공)하고 악의적인 실행 파일을 통해 대상 프로세스의 메모리 공간(예: svchost.exe)을 덮어쓰는 경우에 발생합니다. 그런데,이 방법은 반사 DLL 주입하지 수동 매핑이라고 생각합니다. 반사 dll 분사는 대상 주소 공간에서 대상 공정 부하 자체에서 dll을 의미합니다.

그러나이 문서에서는 인젝터 로드 (이미지 양식, 재배치, iat 물건 만들기)를 자체 메모리에 dll하고 대상 프로세스에 씁니다. 다음은 일반 DLL 주입 방법의 결과입니다: CreateRemoteThread 호출을 사용하여 실행은 일반 DLL 주입과 거의 동일합니다. 여기서 유일한 차이점은 LoadLibrary를 사용하지 않고 대신 DllMain 진입점이어야하는 DLL의 진입점 값 의 주소를 직접 사용한다는 것입니다. 적용할 수 있는 많은 수정 프로그램이 있지만 맬웨어의 즐겨찾기는 다소 보안과 관련된 것(예: DisableNX, DisableSEH, InjectDLL 등)입니다. shimming 데이터베이스를 설치하려면 맬웨어가 다양한 접근 방식을 배포할 수 있습니다. 예를 들어, 한 가지 일반적인 방법은 단순히 sdbinst.exe를 실행 하 고 악의적인 sdb 파일을 가리키는. 그림 10에서 애드웨어, „도관에 의해 보호 검색“, 지속성 및 주입에 대 한 심을 사용. vc32loader.dll을 로드하기 위해 구글 크롬에 „InjectDLL“심을 수행합니다.

sdb 파일을 분석하기위한 몇 가지 기존 도구가 있지만 아래에 나열된 sdb 분석을 위해 파이썬 sdb를 사용했습니다. 이 함수는 시스템에서 현재 실행 중인 모든 프로세스의 스냅숏을 생성하며 „tlhelp32.h“를 #include 합니다. 문서 및 예제는 여기를 참조하십시오. 그것을 할 많은 이유 (합법적인 또는 그렇지 않으면) 있다. 예를 들어 맬웨어 작성자는 신뢰할 수 있는 프로세스에 DLL을 로드하여 악의적인 활동을 숨기거나 보안 장치를 우회하려는 반면, 다른 한편으로는 원래 프로그램의 기능을 확장할 수 있습니다. 그러나 두 활동 단계는 동일합니다. 여기서 유일한 문제는 LoadLibrary에 대한 매개 변수가 대상 프로세스에 있어야 한다는 것입니다. 예를 들어 로드라이브러리(#2)를 „mydll.dll“(#3)과 함께 로드라이브러리의 매개 변수로 사용하는 경우 „mydll.dll“이라는 이름이 대상 프로세스에 있어야 합니다. 이 게시물에서, 나는 악성 코드가 다른 프로세스에서 활동을 숨기기 위해 사용하는 10 가지 기술을 다루었다. 일반적으로 맬웨어는 셸 코드를 다른 프로세스에 직접 삽입하거나 다른 프로세스를 강제로 악의적인 라이브러리로 로드합니다. 표 1에서는 다양한 기술을 분류하고 이 게시물에서 다루는 각 주입 기법을 관찰하기 위한 참고 자료로 사용할 샘플을 제공했습니다.