Facebook 5th Analysis Guide

User Manual: Pdf

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

DownloadFacebook 5th Analysis Guide
Open PDF In BrowserView 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® 2013
EXIF Metadata provided by EXIF.tools

Navigation menu