Facebook 5th Analysis Guide

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 27

LOCO 프로토콜 분석과 구현
HeXA
김태훈
LOCO 프로토콜
TCP/IP를 바탕으로 작동하는 request and
response 프로토콜
패킷 경량화를 목표로 제작된 비공개 프로토콜
‘겁나 빠른 황소프로젝트의 일환으로 개발됨
201110월에 첫 번째 버전 공개 및 사용됨
카카오 팀에서 자체적으로 디자인 구현
분석 과정
버전(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: 그대로 전송
FillBuffer 함수를 통해 현재 커맨드
해당하는 패킷 생성
True & Login : handshake 패킷 생성 후
암호화된 커맨드 패킷 앞에 붙이고 전송
LOCO 서버에 대한 TCP 소켓이 연결되어 있는지 확인
윈도우 KakaoTalk 1.0.0.0 버전 KakaoTalkSLLib.dll
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
BUY
Encrypted
LOGIN
handshake
WRITE
loco.kakao.com
Host
port
Host:port
AES key
(랜덤 생성됨)
Encrypted
AES key
public key
rsa encrypt
LOGIN
AES
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

Navigation menu