Facebook 5th Analysis Guide
User Manual: Pdf
Open the PDF directly: View PDF .
Page Count: 27
Download | |
Open PDF In Browser | View PDF |
LOCO 프로토콜 분석과 구현 HeXA 김태훈 LOCO 프로토콜 • TCP/IP를 바탕으로 작동하는 request and response 프로토콜 • 패킷 경량화를 목표로 제작된 비공개 프로토콜 • ‘겁나 빠른 황소’ 프로젝트의 일환으로 개발됨 • 2011년 10월에 첫 번째 버전 공개 및 사용됨 • 카카오 톡 팀에서 자체적으로 디자인 및 구현 분석 과정 • 구 버전(1.0.0.0)의 윈도우 모바일 어플리케이션 분석 • 대략적인 패킷 생성 과정 분석 • 안드로이드 패킷 분석 • 현재 어플리케이션에서 사용되고 있는 프로토콜 분 석 • 최근 버전(1.5.0.0)의 윈도우 모바일 어플리케이 션 dll 변조 * 구 버전 1.0.0.0, 1.2.0.0 사용 불가능 * 최신 버전 : 1.9.0.0 (2013.05.26) App에서 LOCO 서버와 통신 방법 • LOCO 서버에 대한 TCP 소켓이 연결되어 있는 지 확인 • 그렇지 않다면 재 접속 시도 • FillBuffer 함수를 통해 현재 커맨드에 해당하는 패킷 생성 • if(isSecureMode) • True & Login : handshake 패킷 생성 후 암호화된 커 맨드 패킷 앞에 붙이고 전송 • True & !Login : 커맨드 패킷을 암호화 하고 전송 • False: 그대로 전송 윈도우 KakaoTalk 1.0.0.0 버전 KakaoTalkSLLib.dll LOCO 서버에 대한 TCP 소켓이 연결되어 있는지 확인 FillBuffer 함수를 통해 현재 커맨드 에 해당하는 패킷 생성 True & Login : handshake 패킷 생성 후 암호화된 커맨드 패킷 앞에 붙이고 전송 LOCO 패킷 종류 • LocoPacket : non-secure 패킷 • 암호화 되어있지 않음 • LocoSecureNormalPacket • AES encryption 적용된 secure 패킷 • LocoSecureHandShakePacket • LOGIN 커맨드 패킷에 사용되는 handshak 패킷 LocoPacket • 가장 기본이 되는 패킷 • Packet ID • Status Code : 0 • Method Ex) LOGIN, ADDMEM , ACHATLIST • Body Type : 0 • Body Length • Body Contents • bson 형태로 전송됨 출처 : http://www.bpak.org/ 윈도우 KakaoTalk 1.0.0.0 버전 KakaoTalkSLLib.dll LocoSecureNormalPacket • secure 모드일 때 LocoPacket(주로 커맨드) 을 AES 암호화 한 형태 • Data Length • Encrypted Body contents 출처 : http://www.bpak.org/ LocoSecureHandShakePacket • LOGIN 커맨드 앞에 붙여서 보 내지는 패킷 • LOGIN 커맨드 : LOCO 서버와 세션을 열기 위해 필요한 커맨 드 • AES 암호화에 사용되는 shared key를 서버에 전달하기 위함 • 이후 secure 패킷은 전달된 key 로 암호화 되어 보내짐 출처 : http://www.bpak.org/ 커맨드 종류 • ADDMEM • NOTIREAD • LEAVE • READ • BUY # non-secure • CWRITE • LOGIN • PING • BLOCK • • • • • • • • NCHATLIST CHATON CHATOFF UPDATECHAT UNBLOCK UPSEEN CHATLIST WRITE 윈도우 KakaoTalk 1.0.0.0 버전 KakaoTalkSLLib.dll LOGIN AES key (랜덤 생성됨) public key로 rsa encrypt Encrypted AES key AES handshake BUY WRITE Encrypted LOGIN Host port loco.kakao.com Host:port BUY 커맨드 • LOCO 서버 정보 받음 • loco.kakao.com 에서 소켓을 할당함 • non-secure 모드 • 암호화 되지 않고 LocoPacket 형태로 그대로 전송됨 출처 : http://www.bpak.org/ BUY 커맨드의 구현 안드로이드 패킷 분석 • ADB (Android Debug Bridge) 사용 • tcpdump를 사용해 패킷 덤프 • 설치에 super user 권한 필요 • Wireshark로 패킷을 hex 형태로 분석 CHECKIN 커맨드 • 이미 세션이 열려있는 경우 and 세션이 만료되 지 않은 경우 사용됨 • 형태는 BUY 커맨드와 유사함 Handshake 패킷 Handshake with RSA encrypted AES key AES Encrypted Login AES Encrypted Response LOGIN 커맨드의 구현 Handshake with RSA encrypted AES key AES Encrypted Login Login 최근 윈도우 모바일 앱 리버싱 1.0.0.0 버전 : 아주 친절하게 나와 있음 최근 윈도우 모바일 앱 리버싱 Todo : AES 키를 random이 아닌 이미 아는 키로 바꿔주어야 함 Write 커맨드의 구현 LOCO 프로토콜 외의 통신 • SSL 층에서 통신함 (https) • But 3g 네트워크를 사용하면 http 형태로 분석 가능 반영구적인 세션키 json 파일 LOCO 프로토콜 외의 통신 • 어플리케이션이 켜질 때 가장 먼저 보내지는 패킷 LOCO 프로토콜 외의 통신 • 새로운 세션키를 요청하는 패킷 HTTPS 통신의 구현 Q&A
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 27 Language : ko-KR Tagged PDF : Yes Title : Facebook 5th Analysis Author : User Create Date : 2013:07:28 22:31:11+09:00 Modify Date : 2013:07:28 22:31:11+09:00 Producer : Microsoft® PowerPoint® 2013 Creator : Microsoft® PowerPoint® 2013EXIF Metadata provided by EXIF.tools