john, sipdump, sipcrack

network/VoIP 2010. 6. 29. 15:50
myLG070을 사용하시는 분들 중 상당수가 SIP를 알아내어 다른 전화기에 넣어 사용하거나 x-lite와 같은 별도의 소프트웨어에서 사용하기를 원합니다. 저는 아이팟에서 사용하기를 원하는데요, 불행히도 myLG070에서는 정책적으로 SIP계정을 고객에게 알려주지 않습니다. 아니 왜? 뭥미? 뭐 어쨌든 그렇다고 가만히 있을 우리가 아니죠. s(-_-)z


[ SIP 계정 확인하는 법 ]
아래에 나오는 0707555134는 제 전화번호가 아닙니다. 그러니 전화하셔도 소용없습니다 ^^; 그리고 이 방법은 myLG070이 아닌 다른 VoIP 서비스에서도 사용이 가능합니다. 부디 다른 사람의 SIP 계정을 훔치거나 하는 것과 같은 
악의적인 목적으로는 절대 사용하지 마시길 바랍니다.

가장 먼저 해야할 것은 Wireshark와 같은 패킷 캡쳐 툴을 이용하여 myLG070 전화기의 REGISTER 패킷을 캡쳐하는 것이다. 그리고 캡처한 파일은 파일로 저장하도록 하자. 패킷 뜨는 것도 따로 설명을 해야 할까요? 흠;; -_-; 패스

492d5616aa6a1
위의 빨간 상자로 표시한 부분이 Proxy 이다. 이건 각자 다른 것 같으므로 잘 확인하자.

REGISTER 패킷 내용을 확인하면 SIP와 비밀번호의 MD5 Hash를 확인할 수 있다.

REGISTER sip:lgdacom.net SIP/2.0
From: "07075551234"<sip:7075551234@lgdacom.net>;tag=de8910-aa64a8c0-13c4-4923588a-16533ee-4923588a
To: "07075551234"<sip:7075551234@lgdacom.net>
Call-ID: 40600d88-aa64a8c0-13c4-49235889-56954070-49235889
CSeq: 2 REGISTER
Via: SIP/2.0/UDP 192.168.100.170:5060;branch=z9hG4bK-4923588b-b211e212-214891f4
Max-Forwards: 70
Supported: replaces, 100rel
Contact: <sip:7075551234@192.168.100.170:62113;maddr=211.177.110.195>
Proxy-Require: com.nortelnetworks.firewall
User-Agent: WPN-480H-v1.1.72
x-nt-GUID: 6b365a861dd211b29dc2bb5e5dbe747a
Expires: 3600
Proxy-Authorization: Digest username="7075551234",realm="Realm",nonce="MTIyNzAyMDc1MTExNjNiY2QxZGUwZTM2OWIzMDJiNzhhNWI2NW
UwYTc3Mzk1",uri="sip:lgdacom.net",response="e5969xxxxxxc676c4301c5xxxxxxe990",algorithm=MD5,
cnonce="b211e213",qop=auth,nc=00000001
Content-Length: 0


원래 MD5 Hash는 역함수가 존재하지 않는다. 따라서 비밀번호를 알기 위해서는 브루트 포스(Brute Force)로 비밀번호를 생성한 후 일일이 해시와 비교하여 맞는지 확인하여야만 한다. 어~우 아마 여기서부터 머리가 슬슬 아파지기 시작할 것이다. 그러나 너무 걱정하지는 말자. 이미 누군가가 이 것을 해주는 프로그램을 만들어 놓았다. 우리는 그 것을 잘 이용하기만 하면 된다.

[준비물]
아래의 프로그램들을 실행하기 위한 Linux 환경. 필자는 Ubuntu 사용.
http://www.remote-exploit.org/codes/sipcrack/SIPcrack-0.2.tar.gz
http://www.openwall.com/john/g/john-1.7.3.1.tar.gz

위 프로그램들을 설치하는 방법은 생략하도록 한다. 해보면 그리 어렵지 않다. (뭥미? -_-; 사실 설명하기 귀찮다.)

john-1.7.3.1을 설치하고 아래와 같이 패스워드 목록을 생성한다.

notepad@notepad:~/SIP/john-1.7.3.1/run./john --incremental=digits --stdout=6 > 6digits.txt
최근에 myLG070에 가입한 경우는 비밀번호가 숫자 6자리가 아닐 수 있다고 한다. 어떠한 문자 조합을 사용하고 그 길이는 어떻게 되는지 모르겠습니다. 구글링 해봐도 이 정보는 알 수가 없네요. 만약 영문자 대소 + 특수문자 + 숫자 + 12자리면 대략 난감;

역시 마찬가지로 SIPcrack-0.2를 설치하고 맨 처음 파일로 저장한 패킷 캡처 파일을 SIPcrack-0.2 폴더로 복사해 넣는다. 그리고 sipdump를 이용하여 필요한 부분만 덤프를 받도록 한다.

notepad@notepad:~/SIP/SIPcrack-0.2$ ./sipdump -p mylg070.pcap 070.dump

SIPdump 0.2  ( MaJoMu | www.codito.de )
---------------------------------------

* Using pcap file 'mylg070.pcap' for sniffing
* Starting to sniff with packet filter 'tcp or udp'

* Dumped login from 210.207.255.44 -> 192.168.0.30 (User: '7075551234')

* Exiting, sniffed 1 logins

이제는 앞서 john-1.7.3.1으로 생성했던 6digits.txt 파일을 패킷 캡처 파일과 마찬가지로 SIPcrack-0.2 폴더로 복사하고 아래와 같은 명령어를 입력하여 sipcrack을 실행한다.
notepad@notepad:~/SIP/SIPcrack-0.2$ ./sipcrack -w 6digits.txt 070.dump

SIPcrack 0.2  ( MaJoMu | www.codito.de )
----------------------------------------

* Found Accounts:

Num     Server          Client          User    Hash|Password

1       192.168.0.30    210.207.255.44  7075551234      e5969xxxxxxc676c4301c5xxxxxxe990

* Select which entry to crack (1 - 1): 1
* Password already cracked: '123456'
크랙을 원하는 항목을 선택하고 잠시 기다리면 위와 같이 패스워드가 '툭' 튀어나온다. 필자의 경우 2초도 채 걸리지 않았다.

비밀번호를 알아내고 나니 정말 허무하네요. VoIP의 보안이 얼마나 취약한지 알 수 있습니다. 공개된 장소에서의 VoIP 사용은 자제해야겠다는 생각만 자꾸드네요. 거듭 말씀드리지만 악의적인 목적으로는 이용하지 말아주시기 바랍니다.
필요한 프로그램들입니다. 일단 모두 받습니다.
http://www.codito.de/prog/SIPcrack-0.2.tar.gz
http://www.codito.de/prog/SIPcrack-0.3pre.tar.gz
http://www.openwall.com/john/g/john-1.7.3.1.tar.gz
http://www.tcpdump.org/release/libpcap-0.8.1.tar.gz

Crack 하기 위한 환경을 설정해봅시다.

1. 아무 리눅스 OS를 설치하고 root계정으로 로긴합니다. (gcc는 반드시 깔아야합니다)
2. libpcap-0.8.1.tar.gz 파일 압축을 풀고 컴파일 합니다. ./configure ./make install
3. 생성된 화일중 libpcap.a 화일을 /usr/lib 폴더에 복사하고, pcap.h bpf.h 화일을 /usr/include 로 복사합니다.
4. 3의 파일들은 sipcrack와 sipdump를 컴파일할때 필요한 라이브러리입니다.
5. sipcrack0.2에 있는 pcapstuff.h 화일을 0.3에 복사합니다.
6. make 하면 인스톨을 합니다. make install 하면 /usr/bin 에 복사되서... 어디서는 사용가능하게 됩니다.
7. john-1.7.3.1.tar.gz 의 압축을 푼뒤 src 폴더에서 make clean generic 으로 실행화일을 만듭니다.

sip 크래킹에 필요한 요소는 완료되었습니다.
이제 lg070 의 통화패킷을 가져올 차례입니다.
간편하게 얻을 수 있는 WireShark 를 이용합니다.

패킷을 뜨는 방법은 각자에게 맞겨두겠습니다.
집에 Dummy Hub 가 있다면 070 Ap 를 그쪽에 물리고 다른포트를 노트북에 연결해서 Dump를 뜨거나
Windows 의 공유기능을 이용해 두개의 랜카드 중 하나는 인터넷이 되도록 하고 하나는 070 Ap와 연결하여
공유기능을 통해 통화가 가능하도록 환경을 만들면 AP 와 연결된 랜카드를 통해서 Dump를 뜰 수 있을 것입니다.
방법은 많이 있으니 각자 환경에 맞는 방법을 찾으시기 바랍니다.
이렇게 얻어진 070.pcap 파일을 가지고 암호를 풀어보겠습니다.

1. ./john --incremental=digits --stdout=6 > 6number.txt
2. 캡쳐받은 화일의 을 가져온뒤 sipdump -p 070.pcap 070.dump
3. sipcrack -w 6number.txt 070.dump 
만일 하나의 정보만 들어있다면 그냥 암호가 나올 것입니다.
아닐 경우는 자신의 070번호가 들어있는 메뉴를 선택해주면 됩니다.
4. 드디어 암호가 나왔습니다!
5. 이때 Client 라고 표기된 IP 주소를 기억해둡니다.

이제 X-Lite 에서 설정하는 일만 남았습니다.
SIP Account에 다음을 입력합니다.

1. Display Name : 07012341234(자신의 번호)
2. User Name : 7012341234(자신의 번호에서 맨앞의 0을 뺍니다)
3. Password : 아까 알아내셨죠?
4. Authorization user name : User name 과 같습니다.
5. Domain : lgdacom.net
6. Proxy : xxx.xxx.xxx.xxx:5060 (주소에 아까 기억해 두셨던 IP주소를 넣어주시고 뒤에 :5060을 붙입니다.)


'network > VoIP' 카테고리의 다른 글

VoIP 정리 잘된 블로그  (0) 2010.07.16
VoIP 망 구성도  (0) 2010.06.29
VoIP Security Tool List  (0) 2010.06.23
VoIP ?  (0) 2010.06.14
: