pcap파일을 wireshark로 열어봤을 떄  ssl.handshake.certificates로 필터링 하면 

handshake과정에 server 의 hello, certificate,server hello done 패킷을 볼수가 있는데

여기서 certificate를 추출한다. 

tcp스트림을 보고 헤더를 읽은 후 바이너리에서 스크립트로 서치해서 뽑아내거나 wireshark로 긁어내면 된다.

또는 툴이 있다. binwalk -e a.pcap

*.crt파일을 추출하면 된다. 


참고로 SSL의 handshake과정은 아래와 같다.


찾아낸.certificate에서 modulus를 찾는다. (공개키 N 에 해당한다)

openssl x509 -inform der -in $f -noout -text -modulus

x509는 


그렇게 여러개의 인증서들에서 modulus를 찾아서 모은다. x509는 공개키 인증서의 표준이고 der는 x509의 압축방식인가? 그랫다. 아무튼 인증서들에서 modulus를 찾아서 이 modulus들의 공약수를 구한다. modulus들이 서로소가 아닌걸 찾는다면 -> 공약수를 찾는다면 -> 인수분해가 된것이다. 이제 비밀키를 구할 수 있다.

certificate를 여러번 할당할때 handshake를 여러번 할때 비밀키가 겹칠 수도 있다는 점을 이용한 공격이다.  


(제대로 이해한게 맞는지 모르겠다 ㅠ)

ssl handshake블로그글 http://darksoulstory.tistory.com/57



+ Recent posts