HackJam을 둘러보다가 SSH패킷이 잔뜩 나오는 문제가 있었는데,
문득 난 스니핑을 할줄 알지만 SSH Stream이 나오면 아무것도 못하잖아! 라는 걸 깨닿고, 얘를 어떻게 하면 까볼 수 있을까 하고 노력을 하고 있음.
보통 SSH는 비대칭키를 이용해서 대칭키를 교환하는데 이로써 제 3자는 대칭키를 얻을 수 없게 되어 스니핑한 것을 복호화 할 수 없게 된다라는 스토리.
하지만 만약 내가 타깃의 컴퓨터의 쉘을 갖고 있다면? 서버가 아니라 내가 클라이언트일때 분명 어딘가에 대칭키를 가지고 있을 터인데, 현재 Putty같은 것으로 통신을 해보면 로그인 전에 비대칭키를 저장할거냐는 메세지가 나온다.
>>1
여기서 공개키라는 것은 결국 비대칭키중에 클라이언트가 대칭키를 만들어서 보낼 때 암호화하는 키를 뜻하겠죠?
서버는 그걸 자신의 개인키로 복호화 할테고, 이러면 양자가 모두 대칭키를 갖게되고 통신이 시작!
그렇다면 클라이언트가 생성한 대칭키는 어디에 있을까.
>>2
완전히 잘 못 알았다. 우선 추천 링크는 이쪽
http://www.ibm.com/developerworks/kr/l ··· eyc.html (새 창으로 열기) 무려 젠투리눅스 창시자가 쓴 글이다. ssh가 어떻게 작동하는지 알 수 있다.
우선은 기본통신은 비대칭키로 끝난다. 서버는 공개키를 나눠줄 뿐 그이상의 교환은 없다. 왜냐면 자신만 개인키로 복호화 화면 되기 때문에? 공개키는 얻기 쉽겠지만 결국 사용자가 입력하는 중요한 내용들은 내부분 볼수 없게 된다. 가 골자인것 같다.
추가적인 키교환은 패스워드 없이 서버에 로그인하도록 비밀키를 만드는 것.
그런데 아직도 이론이 머릿속에 가지런히 정리가 안된다.
>>3
찾아볼수록 더 혼돈... 뭐가 맞는건지 =_=
http://blog.naver.com/minminmang?redir ··· 70959010 (새 창으로 열기)>>4
첫번째 생각이 맞다고 잠정 결론
두번째 글에서 언급하는 비밀키는 인증용키라고 생각
<<
레지스트리에 저장된 Putty의 공개키는 얻을 수 있는데 이번의 경우에 제 레지스트리에 들어간 내용은 아래와 같습니다.
0x23,0xab7b65d7e62df09c49e5d6ab6094ae4ea57065dcdc0263010d771628f4677b7fc04711d7c0cb9b9acb20604c615e
51ae5f38b283bfe49dea5371fdecfc63a77a2e5838bed441c79aa07b6b48faa91a8fb83e39c4b3b4eac794414f10dfddd
193자리이다. 위에서는 ssh-rsa 1024 어쩌고 저쩌고 하였는데, 그러면 키 길이가 1024인게 아니었던 것인가?!
앞에 0x23은 또 뭐지? 혼돈의 도가니탕이다.
단순히 내가 이해할 수 잇는 키값이 보였다면 이를 통해서 캡쳐한 ssh의 키교환 패킷에 있는 암호화된 대칭키를 복호화 해서 그 대칭키로 ssh stream를 까 볼수 있다고 생각했는데... 넘사벽이군.
아무래도 헬프를 외쳐야 할 듯 하다. 누구에게 물어보지 - _-;
검색하면서 ettercap이란 툴도 알게 되었는데 이는 ssh1.5의 경우엔 자동으로 복호화를 해주기까지 한단다. ssh1.5의 경우 Bruteforce로 15분만에 키를 알아낼수 있다고 하기때문에, 이를 이용해 클라이언트의 패킷을 변조하여 ssh1.5를 강제로 사용하게 하고 스니핑을 하는 자동화도 가능하다니 꽤 무서운 툴이 되겠다.
Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다