2016-10-07 2 views
-2

CreateProcess 함수를 사용하여 관리 권한이 필요한 클라이언트 프로그램을 시작하는 서버가 있습니다. 모든 해커가 내 클라이언트 프로그램과 동일한 위치에 자신의 프로그램 hacker.exe을 바꾸고 내 서버가 관리 권한으로 실행하는 이름을 totallysafeclient.exe으로 지정해야하기 때문에이 작업을 수행하는 것을 주저합니다.관리자 권한으로 프로세스를 만드는 가장 안전한 방법은 무엇입니까?

System.Security.Cryptography을 사용하여 totallysafeclient.exe의 해시를 계산하여 실제로 그것이 무엇인지 밝히는 지 판단하고있었습니다. 생각?

+0

DLL을로드하면 어떻게됩니까? 특히 현재 디렉토리에서 DLL을로드 할 수 있다면? – SLaks

+0

https://blogs.technet.microsoft.com/srd/2014/05/13/load-library-safely/ – SLaks

+0

파일 시스템의 일부분에'totallysafeclient.exe '를 넣지 않는 이유는 무엇입니까? (예 : Program 파일)은 관리자 만 수정할 수 있습니다. –

답변

0

System.Security.Cryptography을 사용하여 추가 조사를 한 후 Windows에 이미 Code Signing이라는 RSA 암호화가 포함 된 기본 메커니즘이 있으므로 매우 적합하지 않습니다. 코드에 서명하면 사용자가 코드의 출처와 으로 변조 된 경우 알 수 있습니다.

ShellExecute은 UAC를 사용하여 ERROR_ELEVATION_REQUIRED 예외를 처리 할 수 ​​있으므로 CreateProcessAsUser보다 훨씬 좋습니다. 대부분의 사용자가 이고 개발자가인데 비스타가 나왔을 때 싫었지 만 아직까지는 UAC의 프로젝트 리드와 시스템 아키텍트가 왜 필요하고 어떻게 보안이 강화되었는지 설명하는 UAC - What. How. Why.을 보시기 바랍니다.

관련 문제