반응형

내가 톡방에 쓰는 메세지는 어떻게 전송되고 있는 것일까 문득 궁금해졌습니다.

 

그래서 일단 Burp 프록시를 걸어서 잡아봤습니다. 몇몇 페이지(Pay, #뉴스, 카카오TV 등)는 SSL Pinning이 걸려있는지 네트워크 연결상태가 좋지 않다고 나옵니다.

 

 

Pinning 우회를 하게 되면 카톡 앱 내부의 페이지들의 패킷을 Burp 또는 Fiddler 프록시로 들여다 볼 수 있습니다.

 

 

그런데 문제는 카톡 대화방 내에서의 패킷은 프록시에 잡히지가 않습니다. HTTP나 HTTPS가 아닌 다른 프로토콜을 쓰고 있는게 분명해 보입니다.

 

 

혹시 대화방에서의 내 메세지가 암호화가 되지 않은채 평문 전송하고 있는 것은 아니겠지? 라는 생각이 들었습니다만, 후킹을 통해 살펴보니 AES로 잘 암호화해서 전송하고 있네요.

 

 

이번에는 와이어샤크로 대화방 내의 패킷을 잡아보니 암호화된 패킷이 TCP 프로토콜을 이용하여 서버의 5242 포트로 전송되고 있습니다. 포트 번호는 고정되어 있지 않고 5223, 5228, 5242, 9282 등 카톡을 재실행하거나 네트워크 연결 오류가 발생하면 바뀌더군요.

 

 

어떤 때는 80번 포트로도 전송되는데 HTTP프로토콜은 아닙니다.(구글 search 해보니 카카오톡은 자체 TCP 프로토콜인 LOCO 프로토콜을 사용하고 있다고 하네요)

 

 

TCP 패킷은 프록시 설정을 하여도 버프로 잡을 수가 없습니다만, 네트워크 설정 조작을 하면 버프에서도 TCP패킷을 볼 수 있습니다.(hackcatml.tistory.com/98 참고) 카톡 대화방 패킷은 암호화되어 전송되기 때문에 버프로 패킷 잡아봤자 의미가 없지만, 추후 TCP 네트워크 진단 연습용으로 잡아봤습니다.

 

"Can i catch you using BurpSuite??" 대화방 메세지가 TCP패킷에 담겨서 AES로 암호화된 결과가  hex값("7D 55 74 BB F0 ...")으로 전송되고 있습니다.

 

Request TCP 패킷입니다. 암호화된 TCP 패킷이 날라가므로 알수 없는 지렁이 문자열들이 잡히네요.

 

hex값으로 보면 "Can i catch you using BurpSuite??" 문자열이 TCP 패킷에 담겨 잘 암호화되어 전송되고 있는지 확인 가능합니다.

 

반응형

+ Recent posts