여기 내 로프 끝에 있습니다. 저는이 정보를 얻기 위해 3 주 동안 노력했습니다. 계속하기 전에 여기에 악성 코드를 쓰지 않고 있음을 알려 주시기 바랍니다. 그러나 나는 악성 코드의 행동을 감시하는 이진 분석 도구를 작성하고있다.후킹 또는 모니터링 서비스 생성
내가 달성하고자하는 것은 CreateServiceW 및 CreateServiceA를 후크하거나 모니터링하는 것입니다. 그 이유는 CreateService를 호출 한 프로세스와 호출로 서비스로 등록 된 바이너리를 알고 싶습니다.
나는 LPC 메시지를 가로 채기위한 후크 ZwRequestWaitReplyPort 작성, advapi32.dll 용 프록시 DLL 작성 및 CreateService 기능을위한 인라인 후크 작성에 이르기까지 모든 것을 시도했다. 이러한 접근 방식 중 어느 것도 결과를 얻지 못했습니다. 프록시 DLL은 테스트에서 유망했지만 system32의 공식 DLL이 프록시 (BSOD)로 바뀌면 작동하지 않았습니다. 인라인 훅은 DLL이 속한 메모리의 매핑 된 영역에 대한 쓰기 권한을 얻을 수 있다면 작동합니다. 그러나 시간에 관계없이 필자는 필사적으로 대안을 필요로합니다.
SetWindowsHookEx를 살펴 봤는데 프로세스에서 services.exe로 보낸 메시지를 가로 챌 수 있다고 생각됩니다.하지만 확실하지 않습니다.
누구든지 좋은 방향으로 나를 가리킬 수 있습니까? 나는 당신에게 간청하고 있습니다.
레지스트리를 연결/모니터링 할 수 없습니까? 서비스 생성은 항상 HKLM \ SYSTEM \ etc ...을 수정합니다. –
나는 레지스트리가 이미 연결되어있다. 아쉽게도 서비스가 CreateService 또는 StartService를 통해 등록되면 레지스트리 수정을 수행하는 것은 SCManager (services.exe)입니다. 내가 원하는 것은 누가 CreateService를 호출했고 어떤 바이너리가 등록되었는지 = D이다. – deusprogrammer
내 직감이 잘못되지 않았다면 ZwRequestWaitReplyPort가 올바른 방법이 아닙니다. (나는 무엇인지 모르겠습니다). ZwRequestWaitReplyPort는 RPC API이므로 메시지 전달 시스템 만 제공합니다. 수신 기능을 찾아야합니다 (다른 사람이 서비스를 원격으로 시작하면 ZwRequestWaitReplyPort에 걸려 넘어지지 않기 때문입니다). – DiGMi