티스토리 뷰

장난치기

패킷스니핑, 넷북에 우분투 cli 설치..

알 수 없는 사용자 2011. 3. 24. 23:13

요즘 본격적으로 리눅스를 파고 있습니다..

 

원래 ap 패킷스니핑 때문에 좀 찾아보다보니 갑자기 삘받아서 많은 목표를 잡고 삽질중입니다..

 

근데 결국은 그냥 탈옥폰에 스니퍼를 설치해서 해결 ?ㅅ-;;

일단 아이폰에 aptitude가 설치되어 있으면 그냥

 

#apt-get install sniffit

 

출처는 http://ttongfly.net/zbxe/?document_srl=42799

 

실전 테스트!! 스니퍼 공격
스니퍼 프로그램들은 종류에 따라서 사용자 명과 패스워드를 추출해 내는 간단한 것에서부터 모든 네트워크 트래픽을 기록하는 복잡한 것에 이르기까지 다양한 것들이 있다. 이번 절에서는 몇 가지 스니퍼 프로그램을 테스트해 본다.
linsniffer
linuxsniffer
hunt
sniffit
hunt
hunt는 출력 결과를 해석하기 쉽고, 명령어를 추적하기 쉬우며, 세션 스누핑을 실행할 수 있는 도구이다.
작성자 : Pavel Krauz
필요조건 : C, IP 헤더, 리눅스 커널 2.2 이상, LinuxThreads가 지원되는 GlibC 2.1 (or not)
Download : http://www.gncz.cz/kra/index.html
설치
[root@linux mk]# tar xvfz hunt-1.5.tgz
[root@linux mk]# make
[root@linux mk]#./hunt
hunt는 Curse 기반의 프로그램이므로 쉽게 사용할 수 있을 것이다. 시작메뉴는 아래와 같다.
-- Main Menu -- rcvpkt 0, free/alloc 63/64 -----
l/w/r) list/watch/reset connections
u) host up tests
a) arp/simple hijack (avoids ack strom if arp used)
s) simple hijack
d) daemons rst/arp/sniff/mac
o) options
x) exit
*>
l : 현재 커넥션한 접속한 list를 보여준다. default로 telnet/rlogin 커넥션만 모니터링 하게 되어 있다.
w : 커넥션을 단순히 모니터링 하기 위한 옵션이다.
   - s : 출발지에서 발생하는 데이터, -d :  목적지에서 발생하는 데이터, -b : 모든 데이터
r :  reset, 커넥션을 끊습니다.
u : 현재 네트워크 상에서 동작중인 호스트들을 검색하기 위해서는 u키를 눌러 상태를 확인한다.
    - ping을 사용해서 UP되어 있는 호스트들을 찾을 수 있다.
    - 경우에 따라서 패킷 필터링에 의해서 ICMP echo 패킷을 막아 두었을 경우에 그 호스트는 핑(ping)에 으해서 검색되지 않는다. 네트워크 상의 네트워크 인터페이스 중 무작위 모드(promiscuous mode)로 세팅된 것을 찾아서 ARP를 사용하여 검색한다.
** 참고
ICMP echo 패킷 막기
ping 을 사용하는 프로토콜은 ICMP(Internet Control Message Protocol)을 사용한다.
/proc 파일시스템 (커널에서 사용하는 파일시스템)의 icmp 프로토콜의 에코를 막아주면 됩니다.
내 시스템이 다른 곳에서의 ping에 응답하지 않게 하려면
[root@linux mk]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
다시 응답하게 할 때는
[root@linux mk]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Sniffit
sniffit은 hunt에서 제공하는 정보보다 좀더 많은 정보를 제공한다.
작성자 : Brecht Claehout
필요조건 : C, IP 헤더, libpcap 라이버리( ftp://ftp.ee.lbl.gov/libpcap.tar.Z)
Download : http://reptile.rug.ac.be/~coder/sniffit/sniffit.html
sniffit은 상당한 설정 기능을 제공하는 비장의 카드이다. 그러나 사용할 때에 고려해야 할 점들이 많이 있으므로 주의한다.
설치
[root@linux mk]#./configure
[root@linux mk]#make
** 인터렉티브 모드로 작동시키기
[root@linux mk]# ./sniffit -i
Server : 211.234.52.20
Client : 211.234.52.10
         Source                Target
211.234.52.10 : 1704 - 211.234.52.20 : 23     /*  ls, pwd 등 명령만 출력 */
211.234.52.20 : 23 - 211.234.52.10 : 1704     /*  ls, pwd 등 명령와 결과도 출력 */
** 패킷 모니터링 (모티터 출력)
[root@linux mk]# ./sniffit -d -t 211.234.52.10
[root@linux mk]# ./sniffit -d -t 211.234.52.20 -p 23
** 패킷 모니터링 (파일출력)
[root@linux mk]# ./sniffit -t 211.234.52.20 -p 23
파일명 : 211.234.52.10.1704-211.234.52.20.23     /*  ls, pwd 등 명령만 출력 */
[root@linux mk]# ./sniffit -t 211.234.52.10
파일명 : 211.234.52.20.23-211.234.52.10.1704     /*  ls, pwd 등 명령와 결과도 출력 */
일반모드(Normal mode)
각 커넥션에 대한 데이터가 "출발지IP.출발지포트-도착지IP.도착지포트"와 같은 형식으로 저장된다.
Dump 모드
-d, -a 옵션 등을 주었을 경우 데이터가 stdout으로 바로 출력된다.
-c : 설정파일 명시
-p : 특별히 감시할 포트 설정
-s : 발신지 IP로부터 들어오는 패킷을 수집
-t : 목적지 IP로부터 들어오는 패킷을 수집
인터렉티브 모드(Interactive mode)
-i, -I 옵션 등을 주었을 경우 데이터가 curses를 사용하는 터미널로 출력됩니다. 각 커넥션 리스트가 나오고 브라우징이 가능합니다.
F1 : 출발지 호스트에 대한 필터링
F2 : 목적지 호스트에 대한 필터링
F3 : 출발지 포트에 대한 필터링
F4 : 도착지 포트에 대한 필터링
PHoss
http://www.phenoelit.de/ 이라는 그룹에서 만든 패킷 스니퍼로서 HTTP, FTP, LDAP, Telnet, IMAP4, POP3 프로토콜의 로그인 패킷을 잡는다. ID/Password를 효과적으로 잡아 낼 수 있는 스니퍼이다.
Download : http://www.phenoelit.de/phoss/PHoss_src.tar.gz
설치조건 : libpcap 라이버리 (ftp://ftp.ee.lbl.gov/libpcap.tar.Z)
컴파일 및 사용법 :
[root@linux mk]#make
[root@linux mk]#./PHoss
특징 : 로그인 세션만을 잡아내기 위해서는 가장 적합한 스니퍼이다.
** 헤더파일 몇개를 수정해야 합니다. (MK)
#include <pcap/pcap.h>
#include <pcap/net/bpf.h>
Websniffer
tcpdump를 사용하여 같은 세크먼트 내로 흐르는 패킷을 잡아내 월드와이드 웹 포트(www 포트, 80번)로 가는 모든 패킷을 디코딩하여 보여준다. 기본적인 인증을 사용할 경우 ID와 Password 쌍을 디코딩해서 보여줍니다.
Download : http://packetstorm.securify.com/sniffers/websniffer.zip
설치조건 : Perl 5.003 이상, tcpdump
사용법 : sniffer.pl에서 tcpdump의 경로를 확인하여야 한다. 수퍼 유저 권한이 필요하며, 기본적으로 5000개 까지의 패킷을 디코드하여 보여준다.
[root@linux mk]# perl sniffer
결 과 :
[root@infosys websniffer]# perl sniffer.pl
Kernel filter, protocol ALL, datagram packet socket
tcpdump: listening on all devices
211.234.52.18 -> 211.234.52.24 GET /title.gif HTTP/1.1
211.234.52.18 -> 211.234.52.24 GET /icon.gif HTTP/1.1
211.234.52.18 -> 211.234.52.24 GET /doc.gif HTTP/1.1
211.234.52.18 -> 211.234.52.24 GET /apache_pb.gif HTTP/1.1
211.234.52.18 -> 211.234.52.24 GET /banner_wowlinux.gif HTTP/1.1
스니핑의 탐지
스니핑을 탐지하는 방법에는 일반적인 네트워크 인터페이스 정보를 조사하여 간단하게 알아 볼 수 있는 방법과 특정 디텍션 툴을 사용하는 2가지 방법이 있다.
promiscuous mode 이용
promiscuous mode로 설정되어 있는 이더넷 인터페이스를 찾아 스니핑을 하고 있는 호스트를 찾는 방법인데, 브로드캐스트 부분에서 Destination Address가 자신의 어드레서와 같을 때 패킷을 받아들이고 그렇지 않을 경우 버린(drop)지만, 스니핑 공격은 목적 어드레서(Destination Address)가 자신의 어드레서와 같지 않을 경우에도 패킷을 버리지 않고 받아 들인다. 이런 모드를 소위 promiscuous mode라고 한다.
ifconfig -a 나 ifconfig interface 명령을 이용해서 이더넷 인터페이스의 상태를 확인할 수 있다. 명령어를 실행 시킨 후 PROMISC라는 표시가 나타나면 스니핑이 가능한 상태에 있는 것이다.
이런 경우 자체 호스트에서의 스니핑 공격 여부와 함께 시스템 내부에 루트 킷(불법적으로 루트 권한을 빼앗은 침입자가 시스템의 각종 파일들을 위조 및 변조하여 자신의 침입 여부를 숨기고 향후 재 침입의 과정을 용이하게 만드는 불법적인 조작)을 비롯한 Tripwire(각 파일들에 대한 Original 설정 값을 기초로 각각의 파일들에 대한 위/변조 여부를 검증할 수 있는 무결성 검정도구) 설정 등을 철저하게 정밀 조사할 필요성이 있다.
Faked MAC address의 이용
이더넷 상의 다른 호스트에서 Ethernet Interface(NIC)가 promiscuous mode로 설정되어 있는 호스트를 찾는 또 하나의 방법은 Faked MAC address를 사용하는 것이다. MAC(Media Access Control) 어드레스란 LAN상에서 각각의 호스트들을 구별하기 위해서 사용되는 주소 값(IP와 마찬가지로 MAC 어드레스 또한 Unique한 값을 의미한다)을 의미하며, Faked MAC address라는 것은 실제로는 LAN상에서 존재하지 않는 가상의 MAC 어드레스를 의미한다.
Faked MAC address를 가지고 ICMP Echo Request를 보내거난 ARP request를 보내면 일반적인 경우(정상적인 경우)에서는 LAN상에 해당하는 MAC 어드레스를 가진 호스트가 없으므로 Reply를 받는 것 자체가 불가능 하지만, 특정 호스트가 스니핑을 하고 있다면 해당 호스트로부터 위조된 MAC 어드레스에 대한 Reply를 받을 수 있는 근거가 되므로 내부 네트워크에 존재하는 스니핑 공격의 여부를 확인 할 수 있다는 것이 핵심 알고리즘이다.
범용 도구 중에 Sentinel이라는 툴은 이러한 과정을 자동적으로 수행하여 자체 네트워크 환경에서의 스니핑 공격 여부를 자동적으로 탐지할 수 있는 도구인데 주기적으로 사용 할 것을 권고한다. (참조 : http://wwww.subterrain.net/projects/sentinel)
스니핑에 대한 방어책
1. 암호화
암호화를 사용하면 스니핑의 피해를 최소화 할 수 있다. 텔넷대신 SSH(Secure Shell)를, FTP 대신에 SCP를, 메일대신 GNUPG를 이용하면 암호화를 할 수 있다.
2. 암호를 안전하게 전달하는 시스템
보안키(Security Key)와 같은 OTP(One Time Password)를 사용하면 패스워드가 스니핑 당해도 다시 사용하지 못하게 된다. 왜냐하면 이미 전송된 암호는 인증이 이루어지는 순간 효력을 상실하기 때문이다.
3. 특수한 네트워크 장비의 사용
스위칭 허브와 같은 스위칭 장비를 사용하면 스니핑이 불가능해지며, 단지 자신의 트래픽만을 모니터링할 수 있을 뿐이다. IBM Token Ring adapters (TROPIC chipset)과 같은 랜카드는 promiscuous mode를 구현하지 않지만, 구하기 어렵기 때문에 비용적인 측면에서 유용하지 않다. 따라서 스위칭 허브를 사용하는 것이 비용면에서 적절할 것이라 생각된다.
스니퍼는 보안도구이다?
스니퍼는 기본적으로 네트워크 감청 도구이다. 그렇기 때문에 악의적인 사용자에게 의해 네트워크의 호스트상에 스니퍼가 설치되면 많은 피해를 감수 할 수 밖에 없다. 하지만 아이러니하게도 관리자  입장에서는 스니퍼가 네트워크의 트래픽을 감시하는 대단히 유동한 도구일 수도 있다. 외부로 노출된 호스트에 스니퍼를 설치해놓고 이루어진 커넥션을 통해 어떤 데이터가 오고가는가를 감시한다면 해커의 침입을 미리 막을 수 있다는 것이다.
스니퍼는 이렇게 네트웍를 감시하는 목적으로 유용하기 때문에 일부업체에서는 잘 만들어진 사용자 인터페이스를 포함하는 스니퍼 패키지를 판매하고 있기도 하다. 사실 프로그램에 무슨 죄가 있겠는가? 스니퍼는 사용하기에 따라 대단히 위험한 프로그램일 수도 있겠지만 앞서의 스캐너와 마찬가지로 잘만 사용하면 시스템에 침입하려는 시도를 미리 알 수 있다는 점에서 매우 효용이 높다. 또한 스니퍼가 무적의 해킹프로그램이 아니라는 점도 분명히 알아둘 일이다. 일단 적절한 환경에서 작동하기 시작하면 무서운 위력을 발휘하지만 그러기 위해서 우선 해커는 서버를 뚫고 들어가서 스니퍼를 올려놓아야 하고 또 그것을 적합한 권한으로 실행시켜야 한다.
또한 ifconfig나 ifstatus등의 프로그램으로 잡아낼 수도 있으므로 항상 스니핑이 성공하는 것도 아니다. 실제로 스니퍼의 하나인  snort는 시스템 보안도구로서도 상당한 명성을 날리고 있다. snort가 시스템을 감시할 수 있는 이유는 자신이 스니퍼로서 작동하면서 호스트에 오가는 패킷을 조사하기 때문이다. snort는 주어진 규칙에 의해 이 패킷 중에 문제가 될만한 것을 감시하고 경고 메시지를 보낸다.
이렇듯 스니퍼는 중요한 호스트에 설치되어서 해커의 침입을 감시하는데 훌륭하게 사용될 수 있다. [Ref. 1]

 

 

 

요걸로 스니퍼 설치가 끝나고 패킷 좀 잡는거에 멍석좀 깔아주고..

갑자기 여러가지를 하고싶어졌습니다..

제생각엔 남들 안하는 뻘짓이라 생각했는데 이미 해본 사람들이 꽤 있더군요..

아시는 분들은 아시겠지만, 전 리눅스에서 x-window를 안 쓰는 사람입니다..

제 기준에서 데스크탑의 최강자는 누가 뭐래도 역시 Win32. 두번째로는 OSX을 꼽습니다..

뭐 어쨌건, 코코아와 카본 개발을 위해 구매했다가 GMA3150에서 QE/CI가 지원이 되질 않는 바람에 좀 소원해진 넷북을 이용해서 즐기고 있습니다..

 

일단 3.6G짜리 USB에 ubuntu 10.04 lts server를 설치하기로..

 

어쩌다보니 좀 자잘하게 많아서.. 2G짜리 microSD에 일단 pendrivelinux로 설치본을 집어넣었습니다.

넷북에 2G짜리랑 3.6G짜리랑 해서 두개 꼽아놓고..

2G짜리로 먼저 부팅해서 언어설정하고 로케설정을 했습니다..

네트워크를 잡는데.. 일단 랜선을 이용했습니다..

그때는 몰랐습니다.. 무선랜 잡는데 모르면 사람잡는다는걸요..

뭐 어쨌건, 설치를 시작했습니다..

제 넷북 모델명이 ASUS EEE 1005p. 드라이버는 한큐에 끝나더군요.. 드라이버는 더 깔거 없었습니다..

 

드디어 무선랜 잡기입니다..

무선랜 키워드로 구글링을 해보니 iwconfig로 essid와 key를 넣어주라는 답변밖에 보이질 않더군요..

두시간동안 아주 그냥 삽질을 졸라게 했습니다..

public으로 잡았다면 그냥 잘 됐을텐데, 요즘 암호화 안하는 공유기.. 네 그렇죠.. 없습니다..

물론, 요건 그냥 데탑용 리눅스나 넷북리믹스 깔면 알 필요도 없는 문제입니다..

cli니까 고민하는 문제지요..

한 3시간쯤 좀 제쳐두고 이것저것 딴짓좀 하다가 갑자기 생각난것이, 암호 종류가 WPA_PSK/TKIP라는게 쓱 스쳐지나가더군요..

역시. 구글검색을 해보니 저랑 비슷한 고민을 했던 사람이 있습니다..

http://webnautes.tistory.com/141 이곳을 참조했지요..

wpa_supplicant라는것이 있더군요..

우분투에서는 이미 패키지 지원을 하고 있었습니다..

 

# apt-get install wpasupplicant

 

연결 가능한 무선 공유기의 ssid 이름 및 무선 보안 여부를 확인해야 함.


# iwlist wlan0 scanning

 

wpa_supplicant 명령을 사용하려면 wpa_supplicant.conf가 필요하다.
이를 위해 우선 psk키를 생성한다.


# wpa_passphrase ssid_name > /etc/wpa_supplicant/wpa_supplicant.conf
password 입력 후 엔터

 

입력한 password가 psk로 바꿔어 진 것을 확인 할 수 있다.
# cat /etc/wpa_supplicant/wpa_supplicant.conf
# reading passphrase from stdin
network={
    ssid="ssid_name"
    #psk="입력한 password"  
    psk="생성된 psk"
}

 

ip를 dhcp로 할당 받는다


# dhcpcd wlan0 &

또는 수동으로 ip를 설정하려면


# ifconfig wlan0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255
# route add default gw 192.168.0.1 wlan0
# echo nameserver 192.168.0.1 > /etc/resolv.conf   <--DNS 서버 설정


인터넷 사용가능 여부 테스트


# ping google.com
PING google.com (74.125.127.147) 56(84) bytes of data.
64 bytes from pz-in-f147.1e100.net (74.125.127.147): icmp_seq=1 ttl=48 time=135 ms

 

저는 dhcpcd 대신 dhclient를 사용했습니다만, 뭐 그건 그렇게 중요한게 아니지요..

 

 

무선랜도 잡았고.. 작업도중 문득 충전을 안하고 있었다는걸 인지하고는..

 

배터리 잔량을 알고싶어졌습니다..

 

일단 쉬운데 찾기는 무지 오래 걸렸습니다..

 

# apt-get install acpi

 

그러고나서 acpi 실행하면 잔량이 나옵니다..

 

배터리 잔량까지 확인하고 나니 웬지 cli에서 mp3를 듣고 싶었습니다..

 

넷북에선 그냥 mocp만 설치하면 되더군요..

 

# sudo apt-get install moc

 

mocp 띄우면 이쁘게 플레이어가 나옵니다..

 

vmware로 들어가면 좀 힘드네요..

이건 콘솔이든 gui든 공통인듯 하네요.. 많은 결과가 검색되더군요..

일단 alsa-oss 이용하는거고..

vmware-tools를 안깔아도 되는지는 안해봤습니다.. ?ㅅ-;

 

vmware-tools를 깔때 헤더 구하는 방법이 막힐수 있는데, http://masterchief.tistory.com/7 이분이 잘 정리해 두셨더라구요..

 

(1) 커널 버전 확인

# sudo uname -r

아마도 2.6.28-11-generic 이런식으로 나올것임

(2) 커널 헤더 패키지 찾기

# sudo apt-get update

# sudo apt-cache search -linux-headers

(2) 에서 찾은것 중 (1)에서 확인한 커널 버전과 정확히 일치하는 패키지를 설치할 것.

ex) apt-get install linux-headers-2.6.28-11-generic

 

워낙 창을 많이 띄워두고 이것저것 만져보긴 했지만 또 하라그러면 또 할수는 있을것 같네요..

 

이건 리눅스 gui라면 전혀 알 필요도 없고 귀찮기만 할 뿐입니다..

 

아, 뭔가 좀 하다보면 3.6G짜리론 웬지 부족할듯 싶습니다..

다음에 7.8G짜리 SD카드에 새로 설치하면서 문서를 정리해야겠군요..

그때는 아이폰 및 제가 가진 개발베드용 툴체인까지 구성하고 문서화해야겠지요..

 

일단은 제가 보기 위해 정리한거지만, 다른 누군가에게 도움이 될 수 있다면 좋은거고요.