linux安裝tcpdump
⑴ 關於linux tcpmp命令
用簡單的話來定義tcpmp,就是:mp the traffic on a network,根據使用者的定義對網路上的數據包進行截獲的包分析工具。 tcpmp可以將網路中傳送的數據包的「頭」完全截獲下來提供分析。它支持針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
實用命令實例
默認啟動
tcpmp
普通情況下,直接啟動tcpmp將監視第一個網路介面上所有流過的數據包。
監視指定網路介面的數據包
tcpmp -i eth1
如果不指定網卡,默認tcpmp只會監視第一個網路介面,一般是eth0,下面的例子都沒有指定網路介面。
監視指定主機的數據包
列印所有進入或離開sundown的數據包.
tcpmp host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的數據包
tcpmp host 210.27.48.1
列印helios 與 hot 或者與 ace 之間通信的數據包
tcpmp host helios and \( hot or ace \)
截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信
tcpmp host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
列印ace與任何其他主機之間通信的IP 數據包, 但不包括與helios之間的數據包.
tcpmp ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
tcpmp ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname發送的所有數據
tcpmp -i eth0 src host hostname
監視所有送到主機hostname的數據包
tcpmp -i eth0 dst host hostname
監視指定主機和埠的數據包
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令
tcpmp tcp port 23 and host 210.27.48.1
對本機的udp 123 埠進行監視 123 為ntp的服務埠
tcpmp udp port 123
監視指定網路的數據包
列印本地主機與Berkeley網路上的主機之間的所有通信數據包(nt: ucb-ether, 此處可理解為'Berkeley網路'的網路地址,此表達式最原始的含義可表達為: 列印網路地址為ucb-ether的所有數據包)
tcpmp net ucb-ether
列印所有通過網關snup的ftp數據包(注意, 表達式被單引號括起來了, 這可以防止shell對其中的括弧進行錯誤解析)
tcpmp 'gateway snup and (port ftp or ftp-data)'
列印所有源地址或目標地址是本地主機的IP數據包
(如果本地網路通過網關連到了另一網路, 則另一網路並不能算作本地網路.(nt: 此句翻譯曲折,需補充).localnet 實際使用時要真正替換成本地網路的名字)
tcpmp ip and not net localnet
⑵ tcpmp鏄浠涔堟剰鎬.騫蹭粈涔堢敤鐨.鍝閲屾湁璇︾粏鐨勮祫鏂,
TCPDUMP綆浠
鍦ㄤ紶緇熺殑緗戠粶鍒嗘瀽鍜屾祴璇曟妧鏈涓錛屽棶鎺㈠櫒(sniffer)鏄鏈甯歌侊紝涔熸槸鏈閲嶈佺殑鎶鏈涔嬩竴銆俿niffer宸ュ叿棣栧厛鏄涓虹綉緇滅$悊鍛樺拰緗戠粶紼嬪簭鍛樿繘琛岀綉緇滃垎鏋愯岃捐$殑銆傚逛簬緗戠粶綆$悊浜哄憳鏉ヨ達紝浣跨敤鍡呮帰鍣ㄥ彲浠ラ殢鏃舵帉鎻$綉緇滅殑瀹為檯鎯呭喌錛屽湪緗戠粶鎬ц兘鎬ュ墽涓嬮檷鐨勬椂鍊欙紝鍙浠ラ氳繃sniffer宸ュ叿鏉ュ垎鏋愬師鍥狅紝鎵懼嚭閫犳垚緗戠粶闃誨炵殑鏉ユ簮銆傚逛簬緗戠粶紼嬪簭鍛樻潵璇,閫氳繃sniffer宸ュ叿鏉ヨ皟璇曠▼搴忋
鐢ㄨ繃windows騫沖彴涓婄殑sniffer宸ュ叿(渚嬪傦紝netxray鍜宻niffer pro杞浠)鐨勬湅鍙嬪彲鑳介兘鐭ラ亾錛屽湪鍏變韓寮忕殑灞鍩熺綉涓錛岄噰鐢╯niffer宸ュ叿綆鐩村彲浠ュ圭綉緇滀腑鐨勬墍鏈夋祦閲忎竴瑙堟棤浣欙紒Sniffer宸ュ叿瀹為檯涓婂氨鏄涓涓緗戠粶涓婄殑鎶撳寘宸ュ叿錛屽悓鏃惰繕鍙浠ュ規姄鍒扮殑鍖呰繘琛屽垎鏋愩傜敱浜庡湪鍏變韓寮忕殑緗戠粶涓錛屼俊鎮鍖呮槸浼氬箍鎾鍒扮綉緇滀腑鎵鏈変富鏈虹殑緗戠粶鎺ュ彛錛屽彧涓嶈繃鍦ㄦ病鏈変嬌鐢╯niffer宸ュ叿涔嬪墠錛屼富鏈虹殑緗戠粶璁懼囦細鍒ゆ柇璇ヤ俊鎮鍖呮槸鍚﹀簲璇ユ帴鏀訛紝榪欐牱瀹冨氨浼氭姏寮冧笉搴旇ユ帴鏀剁殑淇℃伅鍖咃紝sniffer宸ュ叿鍗翠嬌涓繪満鐨勭綉緇滆懼囨帴鏀舵墍鏈夊埌杈劇殑淇℃伅鍖咃紝榪欐牱灝辮揪鍒頒簡緗戠粶鐩戝惉鐨勬晥鏋溿
Linux浣滀負緗戠粶鏈嶅姟鍣錛岀壒鍒鏄浣滀負璺鐢卞櫒鍜岀綉鍏蟲椂錛屾暟鎹鐨勯噰闆嗗拰鍒嗘瀽鏄蹇呬笉鍙灝戠殑銆傛墍浠ワ紝浠婂ぉ鎴戜滑灝辨潵鐪嬬湅Linux涓寮哄ぇ鐨勭綉緇滄暟鎹閲囬泦鍒嗘瀽宸ュ叿鈥斺擳cpDump銆
鐢ㄧ畝鍗曠殑璇濇潵瀹氫箟tcpmp錛屽氨鏄錛歞ump the traffice on a network錛屾牴鎹浣跨敤鑰呯殑瀹氫箟瀵圭綉緇滀笂鐨勬暟鎹鍖呰繘琛屾埅鑾風殑鍖呭垎鏋愬伐鍏楓
浣滀負浜掕仈緗戜笂緇忓吀鐨勭殑緋葷粺綆$悊鍛樺繀澶囧伐鍏鳳紝tcpmp浠ュ叾寮哄ぇ鐨勫姛鑳斤紝鐏墊椿鐨勬埅鍙栫瓥鐣ワ紝鎴愪負姣忎釜楂樼駭鐨勭郴緇熺$悊鍛樺垎鏋愮綉緇滐紝鎺掓煡闂棰樼瓑鎵蹇呭囩殑涓滀笢涔嬩竴銆
欏懼悕鎬濅箟錛孴cpDump鍙浠ュ皢緗戠粶涓浼犻佺殑鏁版嵁鍖呯殑鈥滃ご鈥濆畬鍏ㄦ埅鑾蜂笅鏉ユ彁渚涘垎鏋愩傚畠鏀鎸侀拡瀵圭綉緇滃眰銆佸崗璁銆佷富鏈恆佺綉緇滄垨絝鍙g殑榪囨護錛屽苟鎻愪緵and銆乷r銆乶ot絳夐昏緫璇鍙ユ潵甯鍔╀綘鍘繪帀鏃犵敤鐨勪俊鎮銆
tcpmp鎻愪緵浜嗘簮浠g爜錛屽叕寮浜嗘帴鍙o紝鍥犳ゅ叿澶囧緢寮虹殑鍙鎵╁睍鎬э紝瀵逛簬緗戠粶緇存姢鍜屽叆渚佃呴兘鏄闈炲父鏈夌敤鐨勫伐鍏楓倀cpmp瀛樺湪浜庡熀鏈鐨凢reeBSD緋葷粺涓錛岀敱浜庡畠闇瑕佸皢緗戠粶鐣岄潰璁劇疆涓烘販鏉傛ā寮忥紝鏅閫氱敤鎴蜂笉鑳芥e父鎵ц岋紝浣嗗叿澶噐oot鏉冮檺鐨勭敤鎴峰彲浠ョ洿鎺ユ墽琛屽畠鏉ヨ幏鍙栫綉緇滀笂鐨勪俊鎮銆傚洜姝ょ郴緇熶腑瀛樺湪緗戠粶鍒嗘瀽宸ュ叿涓昏佷笉鏄瀵規湰鏈哄畨鍏ㄧ殑濞佽儊錛岃屾槸瀵圭綉緇滀笂鐨勫叾浠栬$畻鏈虹殑瀹夊叏瀛樺湪濞佽儊銆
鏅閫氭儏鍐典笅錛岀洿鎺ュ惎鍔╰cpmp灝嗙洃瑙嗙涓涓緗戠粶鐣岄潰涓婃墍鏈夋祦榪囩殑鏁版嵁鍖呫
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛
bash-2.02# tcpmp
tcpmp: listening on eth0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
^C
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
棣栧厛鎴戜滑娉ㄦ剰涓涓嬶紝浠庝笂闈㈢殑杈撳嚭緇撴灉涓婂彲浠ョ湅鍑烘潵錛屽熀鏈涓妕cpmp鎬葷殑鐨勮緭鍑烘牸寮忎負錛氱郴緇熸椂闂 鏉ユ簮涓繪満.絝鍙 > 鐩鏍囦富鏈.絝鍙 鏁版嵁鍖呭弬鏁
TcpDump鐨勫弬鏁板寲鏀鎸
tcpmp鏀鎸佺浉褰撳氱殑涓嶅悓鍙傛暟錛屽備嬌鐢-i鍙傛暟鎸囧畾tcpmp鐩戝惉鐨勭綉緇滅晫闈錛岃繖鍦ㄨ$畻鏈哄叿鏈夊氫釜緗戠粶鐣岄潰鏃墮潪甯告湁鐢錛屼嬌鐢-c鍙傛暟鎸囧畾瑕佺洃鍚鐨勬暟鎹鍖呮暟閲忥紝浣跨敤-w鍙傛暟鎸囧畾灝嗙洃鍚鍒扮殑鏁版嵁鍖呭啓鍏ユ枃浠朵腑淇濆瓨錛岀瓑絳夈
鐒惰屾洿澶嶆潅鐨則cpmp鍙傛暟鏄鐢ㄤ簬榪囨護鐩鐨勶紝榪欐槸鍥犱負緗戠粶涓嫻侀噺寰堝ぇ錛屽傛灉涓嶅姞鍒嗚鯨灝嗘墍鏈夌殑鏁版嵁鍖呴兘鎴鐣欎笅鏉ワ紝鏁版嵁閲忓お澶э紝鍙嶈屼笉瀹規槗鍙戠幇闇瑕佺殑鏁版嵁鍖呫備嬌鐢ㄨ繖浜涘弬鏁板畾涔夌殑榪囨護瑙勫垯鍙浠ユ埅鐣欑壒瀹氱殑鏁版嵁鍖咃紝浠ョ緝灝忕洰鏍囷紝鎵嶈兘鏇村ソ鐨勫垎鏋愮綉緇滀腑瀛樺湪鐨勯棶棰樸倀cpmp浣跨敤鍙傛暟鎸囧畾瑕佺洃瑙嗘暟鎹鍖呯殑綾誨瀷銆佸湴鍧銆佺鍙g瓑錛屾牴鎹鍏蜂綋鐨勭綉緇滈棶棰橈紝鍏呭垎鍒╃敤榪欎簺榪囨護瑙勫垯灝辮兘杈懼埌榪呴熷畾浣嶆晠闅滅殑鐩鐨勩傝蜂嬌鐢╩an tcpmp鏌ョ湅榪欎簺榪囨護瑙勫垯鐨勫叿浣撶敤娉曘
鏄劇劧涓轟簡瀹夊叏璧瘋侊紝涓嶇敤浣滅綉緇滅$悊鐢ㄩ旂殑璁$畻鏈轟笂涓嶅簲璇ヨ繍琛岃繖涓綾葷殑緗戠粶鍒嗘瀽杞浠訛紝涓轟簡灞忚斀瀹冧滑錛屽彲浠ュ睆钄藉唴鏍鎬腑鐨刡pfilter浼璁懼囥備竴鑸鎯呭喌涓嬬綉緇滅‖浠跺拰TCP/IP鍫嗘爤涓嶆敮鎸佹帴鏀舵垨鍙戦佷笌鏈璁$畻鏈烘棤鍏崇殑鏁版嵁鍖咃紝涓轟簡鎺ユ敹榪欎簺鏁版嵁鍖咃紝灝卞繀欏諱嬌鐢ㄧ綉鍗$殑娣鋒潅妯″紡錛屽苟緇曡繃鏍囧噯鐨凾CP/IP鍫嗘爤鎵嶈屻傚湪FreeBSD涓嬶紝榪欏氨闇瑕佸唴鏍告敮鎸佷吉璁懼嘼pfilter銆傚洜姝わ紝鍦ㄥ唴鏍鎬腑鍙栨秷bpfilter鏀鎸侊紝灝辮兘灞忚斀tcpmp涔嬬被鐨勭綉緇滃垎鏋愬伐鍏楓
騫朵笖褰撶綉鍗¤璁劇疆涓烘販鏉傛ā寮忔椂錛岀郴緇熶細鍦ㄦ帶鍒跺彴鍜屾棩蹇楁枃浠朵腑鐣欎笅璁板綍錛屾彁閱掔$悊鍛樼暀鎰忚繖鍙扮郴緇熸槸鍚﹁鐢ㄤ綔鏀誨嚮鍚岀綉緇滅殑鍏朵粬璁$畻鏈虹殑璺蟲澘銆
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled
鉶界劧緗戠粶鍒嗘瀽宸ュ叿鑳藉皢緗戠粶涓浼犻佺殑鏁版嵁璁板綍涓嬫潵錛屼絾鏄緗戠粶涓鐨勬暟鎹嫻侀噺鐩稿綋澶э紝濡備綍瀵硅繖浜涙暟鎹榪涜屽垎鏋愩佸垎綾葷粺璁°佸彂鐜板苟鎶ュ憡閿欒鍗存槸鏇村叧閿鐨勯棶棰樸傜綉緇滀腑鐨勬暟鎹鍖呭睘浜庝笉鍚岀殑鍗忚錛岃屼笉鍚屽崗璁鏁版嵁鍖呯殑鏍煎紡涔熶笉鍚屻傚洜姝ゅ規崟鑾風殑鏁版嵁榪涜岃В鐮侊紝灝嗗寘涓鐨勪俊鎮灝藉彲鑳界殑灞曠ず鍑烘潵錛屽逛簬鍗忚鍒嗘瀽宸ュ叿鏉ヨ叉洿涓洪噸瑕併傛槀璐電殑鍟嗕笟鍒嗘瀽宸ュ叿鐨勪紭鍔垮氨鍦ㄤ簬瀹冧滑鑳芥敮鎸佸緢澶氱嶇被鐨勫簲鐢ㄥ眰鍗忚錛岃屼笉浠呬粎鍙鏀鎸乼cp銆乽dp絳変綆灞傚崗璁銆
浠庝笂闈tcpmp鐨勮緭鍑哄彲浠ョ湅鍑猴紝tcpmp瀵規埅鑾風殑鏁版嵁騫舵病鏈夎繘琛屽交搴曡В鐮侊紝鏁版嵁鍖呭唴鐨勫ぇ閮ㄥ垎鍐呭規槸浣跨敤鍗佸叚榪涘埗鐨勫艦寮忕洿鎺ユ墦鍗拌緭鍑虹殑銆傛樉鐒惰繖涓嶅埄浜庡垎鏋愮綉緇滄晠闅滐紝閫氬父鐨勮В鍐沖姙娉曟槸鍏堜嬌鐢ㄥ甫-w鍙傛暟鐨則cpmp 鎴鑾鋒暟鎹騫朵繚瀛樺埌鏂囦歡涓錛岀劧鍚庡啀浣跨敤鍏朵粬紼嬪簭榪涜岃В鐮佸垎鏋愩傚綋鐒朵篃搴旇ュ畾涔夎繃婊よ勫垯錛屼互閬垮厤鎹曡幏鐨勬暟鎹鍖呭~婊℃暣涓紜鐩樸
TCP鍔熻兘
鏁版嵁榪囨護
涓嶅甫浠諱綍鍙傛暟鐨凾cpDump灝嗘悳緔㈢郴緇熶腑鎵鏈夌殑緗戠粶鎺ュ彛錛屽苟鏄劇ず瀹冩埅鑾風殑鎵鏈夋暟鎹錛岃繖浜涙暟鎹瀵規垜浠涓嶄竴瀹氬叏閮介渶瑕侊紝鑰屼笖鏁版嵁澶澶氫笉鍒╀簬鍒嗘瀽銆傛墍浠ワ紝鎴戜滑搴斿綋鍏堟兂濂介渶瑕佸摢浜涙暟鎹錛孴cpDump鎻愪緵浠ヤ笅鍙傛暟渚涙垜浠閫夋嫨鏁版嵁錛
-b 鍦ㄦ暟鎹-閾捐礬灞備笂閫夋嫨鍗忚錛屽寘鎷琲p銆乤rp銆乺arp銆乮px閮芥槸榪欎竴灞傜殑銆
渚嬪傦細tcpmp -b arp 灝嗗彧鏄劇ず緗戠粶涓鐨刟rp鍗沖湴鍧杞鎹㈠崗璁淇℃伅銆
-i 閫夋嫨榪囨護鐨勭綉緇滄帴鍙o紝濡傛灉鏄浣滀負璺鐢卞櫒鑷沖皯鏈変袱涓緗戠粶鎺ュ彛錛岄氳繃榪欎釜閫夐」錛屽氨鍙浠ュ彧榪囨護鎸囧畾鐨勬帴鍙d笂閫氳繃鐨勬暟鎹銆備緥濡傦細
tcpmp -i eth0 鍙鏄劇ず閫氳繃eth0鎺ュ彛涓婄殑鎵鏈夋姤澶淬
src銆乨st銆乸ort銆乭ost銆乶et銆乪ther銆乬ateway榪欏嚑涓閫夐」鍙堝垎鍒鍖呭惈src銆乨st 銆乸ort銆乭ost銆乶et銆乪host絳夐檮鍔犻夐」銆備粬浠鐢ㄦ潵鍒嗚鯨鏁版嵁鍖呯殑鏉ユ簮鍜屽幓鍚戱紝src host 192.168.0.1鎸囧畾婧愪富鏈篒P鍦板潃鏄192.168.0.1錛宒st net 192.168.0.0/24鎸囧畾鐩鏍囨槸緗戠粶192.168.0.0銆備互姝ょ被鎺錛宧ost鏄涓庡叾鎸囧畾涓繪満鐩稿叧鏃犺哄畠鏄婧愯繕鏄鐩鐨勶紝net鏄涓庡叾鎸囧畾緗戠粶鐩稿叧鐨勶紝ether鍚庨潰璺熺殑涓嶆槸IP鍦板潃鑰屾槸鐗╃悊鍦板潃錛岃実ateway鍒欑敤浜庣綉鍏充富鏈恆傚彲鑳芥湁鐐瑰嶆潅錛岀湅涓嬮潰渚嬪瓙灝辯煡閬撲簡錛
tcpmp src host 192.168.0.1 and dst net 192.168.0.0/24
榪囨護鐨勬槸婧愪富鏈轟負192.168.0.1涓庣洰鐨勭綉緇滀負192.168.0.0鐨勬姤澶淬
tcpmp ether src 00:50:04:BA:9B and dst鈥︹
榪囨護婧愪富鏈虹墿鐞嗗湴鍧涓篨XX鐨勬姤澶達紙涓轟粈涔坋ther src鍚庨潰娌℃湁host鎴栬卬et錛熺墿鐞嗗湴鍧褰撶劧涓嶅彲鑳芥湁緗戠粶鍠斤級銆
Tcpmp src host 192.168.0.1 and dst port not telnet
榪囨護婧愪富鏈192.168.0.1鍜岀洰鐨勭鍙d笉鏄痶elnet鐨勬姤澶淬
ip icmp arp rarp 鍜 tcp銆乽dp銆乮cmp榪欎簺閫夐」絳夐兘瑕佹斁鍒扮涓涓鍙傛暟鐨勪綅緗錛岀敤鏉ヨ繃婊ゆ暟鎹鎶ョ殑綾誨瀷銆
渚嬪傦細
tcpmp ip src鈥︹
鍙榪囨護鏁版嵁-閾捐礬灞備笂鐨処P鎶ュご銆
tcpmp udp and src host 192.168.0.1
鍙榪囨護婧愪富鏈192.168.0.1鐨勬墍鏈塽dp鎶ュご銆
鏁版嵁鏄劇ず/杈撳叆杈撳嚭
TcpDump鎻愪緵浜嗚凍澶熺殑鍙傛暟鏉ヨ╂垜浠閫夋嫨濡備綍澶勭悊寰楀埌鐨勬暟鎹錛屽備笅鎵紺猴細
-l 鍙浠ュ皢鏁版嵁閲嶅畾鍚戙
濡倀cpmp -l 錛瀟cpcap.txt灝嗗緱鍒扮殑鏁版嵁瀛樺叆tcpcap.txt鏂囦歡涓銆
-n 涓嶈繘琛孖P鍦板潃鍒頒富鏈哄悕鐨勮漿鎹銆
濡傛灉涓嶄嬌鐢ㄨ繖涓欏癸紝褰撶郴緇熶腑瀛樺湪鏌愪竴涓繪満鐨勪富鏈哄悕鏃訛紝TcpDump浼氭妸IP鍦板潃杞鎹涓轟富鏈哄悕鏄劇ず錛屽氨鍍忚繖鏍鳳細eth0 錛 ntc9.1165錛 router.domain.net.telnet錛屼嬌鐢-n鍚庡彉鎴愪簡錛歟th0 錛 192.168.0.9.1165 錛 192.168.0.1.telnet銆
-nn 涓嶈繘琛岀鍙e悕縐扮殑杞鎹銆
涓婇潰榪欐潯淇℃伅浣跨敤-nn鍚庡氨鍙樻垚浜嗭細eth0 錛 ntc9.1165 錛 router.domain.net.23銆
-N 涓嶆墦鍗板嚭榛樿ょ殑鍩熷悕銆
榪樻槸榪欐潯淇℃伅-N 鍚庡氨鏄錛歟th0 錛 ntc9.1165 錛 router.telnet銆
-O 涓嶈繘琛屽尮閰嶄唬鐮佺殑浼樺寲銆
-t 涓嶆墦鍗癠NIX鏃墮棿鎴籌紝涔熷氨鏄涓嶆樉紺烘椂闂淬
-tt 鎵撳嵃鍘熷嬬殑銆佹湭鏍煎紡鍖栬繃鐨勬椂闂淬
-v 璇︾粏鐨勮緭鍑猴紝涔熷氨姣旀櫘閫氱殑澶氫簡涓猅TL鍜屾湇鍔$被鍨嬨
TCPDUMP鐨勫畨瑁
鍦╨inux涓媡cpmp鐨勫畨瑁呭嶮鍒嗙畝鍗曪紝涓鑸鐢變袱縐嶅畨瑁呮柟寮忋備竴縐嶆槸浠rpm鍖呯殑褰㈠紡鏉ヨ繘琛屽畨瑁呫傚彟澶栦竴縐嶆槸浠ユ簮紼嬪簭鐨勫艦寮忓畨瑁呫
1錛 rpm鍖呯殑褰㈠紡瀹夎
#rpm -ivh tcpmp-3_4a5.rpm
榪欐牱tcpmp灝遍『鍒╁湴瀹夎呭埌浣犵殑linux緋葷粺涓銆傛庝箞鏍鳳紝寰堢畝鍗曞惂銆
2錛 婧愮▼搴忕殑瀹夎
#tar xvfz tcpmp-3_4a5.tar.Z
rpm鐨勫寘鍙浠ヤ嬌鐢ㄥ備笅鍛戒護瀹夎:
#rpm -ivh tcpmp-3_4a5.src.rpm
榪欐牱灝辨妸tcpmp鐨勬簮浠g爜瑙e帇鍒/usr/src/redhat/SOURCES鐩褰曚笅.
絎浜屾 鍋氬ソ緙栬瘧婧愮▼搴忓墠鐨勫噯澶囨椿鍔
鍦ㄧ紪璇戞簮紼嬪簭涔嬪墠錛屾渶濂藉凡緇忕『瀹氬簱鏂囦歡libpcap宸茬粡瀹夎呭畬姣曪紝榪欎釜搴撴枃浠舵槸tcpmp杞浠舵墍闇鐨勫簱鏂囦歡 銆傚悓鏍鳳紝浣犲悓鏃惰繕瑕佹湁涓涓鏍囧噯鐨刢璇璦緙栬瘧鍣ㄣ傚湪linux涓嬫爣鍑嗙殑c 璇璦緙栬瘧鍣ㄤ竴鑸鏄痝cc銆 鍦╰cpmp鐨勬簮紼嬪簭鐩褰曚腑銆傛湁涓涓鏂囦歡鏄疢akefile.in錛宑onfigure鍛戒護灝辨槸浠嶮akefile.in鏂囦歡涓鑷鍔ㄤ駭鐢烳akefile鏂囦歡銆傚湪Makefile.in鏂囦歡涓錛屽彲浠ユ牴鎹緋葷粺鐨勯厤緗鏉ヤ慨鏀笲INDEST 鍜 MANDEST 榪欎袱涓瀹忓畾涔夛紝緙虹渷鍊兼槸
BINDEST = @sbindir@
MANDEST = @mandir@
絎涓涓瀹忓艱〃鏄庡畨瑁卼cpmp鐨勪簩榪涘埗鏂囦歡鐨勮礬寰勫悕錛岀浜屼釜琛ㄦ槑tcpmp鐨刴an 甯鍔╅〉鐨勮礬寰勫悕,浣犲彲浠ヤ慨鏀瑰畠浠鏉ユ弧瓚崇郴緇熺殑闇奼傘
絎涓夋 緙栬瘧婧愮▼搴
浣跨敤婧愮▼搴忕洰褰曚腑鐨刢onfigure鑴氭湰錛屽畠浠庣郴緇熶腑璇誨嚭鍚勭嶆墍闇鐨勫睘鎬с傚苟涓旀牴鎹甅akefile.in鏂囦歡鑷鍔ㄧ敓鎴怣akefile鏂囦歡錛屼互渚跨紪璇戜嬌鐢.make 鍛戒護鍒欐牴鎹甅akefile鏂囦歡涓鐨勮勫垯緙栬瘧tcpmp鐨勬簮紼嬪簭銆備嬌鐢╩ake install鍛戒護瀹夎呯紪璇戝ソ鐨則cpmp鐨勪簩榪涘埗鏂囦歡銆
鎬葷粨涓涓嬪氨鏄:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
鍏充簬tcpmp鏇磋︾粏鐨勪俊鎮錛岃鋒煡鐪婱an tcpmp銆
⑶ Linux 基礎教程 29-tcpmp命令-1
在Linux中輸入命令man tcpmp給出的定義如下所示:
是不是感覺很懵?我們用通俗、形象、學術的表達方式來全方位描述tcpmp:
常用選項如下所示:
1、第一個抓包示例
-i : 指定用來抓包的網路介面,這個參數在伺服器有多個網卡的時候非常有效
-nn : 不轉換協議和埠號,當tcpmp遇到協議號或埠號,不需要將這些數字轉換為對應的協議名稱或埠名稱,如22埠SSH埠,我們希望顯示22,而非SSH
-X : 將協議頭和包內容原原本本的顯示出來,tcpmp會同時以16進制和ASCII的形式進行顯示,在協議分析時非常好用。
'port 22' : 告訴tcpmp要有選擇的顯示所抓到的包,在該示例中,只顯示源埠或目的埠是22的數據包,其他的數據包則不顯示。
-c : 用來指定抓包的個數,示例設置的個數為1,則代表僅抓取一個包之後就退出不再抓包了。
2、-e 增加數據鏈路層的頭部信息
通過兩個命令的輸出對比,可以看到增加-e選項後,輸出的結果中增加MAC地址信息。而且在輸出內容中會有 oui Unknown ,OUI即Organizationally unique identifier(組織唯一標識符),在任何一塊網卡中燒錄的6位元組MAC地址中,前3個位元組體現了OUI,其表明了網卡的製造組織,通常情況下,該標識符是唯一的。在本例中,由於沒有識別出網卡的製造商,因此顯示為Unknown。
3、-l 將輸出變為行緩沖模式
-l的作用是將tcpmp的輸出行為變為 行緩沖 方式,這樣可以保證tcpmp遇到換行符,就立即將緩沖的內容輸出到標准輸出(stdout),方便利用管道或重定向方式進行後續處理,而不會造成延遲。
在Linux的標准I/O中提供了 全緩沖 、 行緩沖 、 無緩沖 三種緩沖方式。標准錯誤是不帶緩沖的,而終端設備常為行緩沖,其他默認則為全緩沖。
在該例中,將tcpmp輸出的內容通過管道提取第5列,可以用來查看詳細的連接信息。而如果不加 -l 選項時,則只有當緩沖區全部占滿時,tcpmp才會將緩沖區中的內容輸出,這樣就有可能導致輸出不連續的,如果強行結束,則會影響下一行的完整性。
4、-t 輸出不加時間戳
在增加選項 -t 選項後,時間23:48:03.193526就消失了。tcpmp默認情況下是按微秒來計時,因此最一個時間精確到了第6位。
5、 -v 顯示詳細信息
在增加 -v 選項後,會在輸出的內容中增加 tos 、 ttl 、 id 、 offset 、 協議編號 、 總長度 等,如需要理解這些信息,就需要了解TCP/IP協議中的頭的具體定義了。
6、-F 指定過濾表達式所在的文件
在第一個示例中,命令行增加了 'port 22' ,而這一項就叫 過濾條件 ,如果設置了過濾條件,則tcpmp只抓取滿足過濾條件的數據包。如需要設置較為復雜的過濾條件或復用過濾條件時,這時可以將過濾條件保存為文件,然後通過-F載入該過濾文件。
7、 -w 將原始數據包信息保存到文件中
當我們查看保存的文件時,出現的是亂碼。則代表無法直接查看,很有可能是二進制文件。那麼怎麼查看保存的文件了?請看下一個示例。
7、 -r 從文件中讀取原始數據包
通過-w和-r選項即可實現抓包的錄制回放功能。
⑷ sniffer狀態
sniffer是竊聽的意思
應該就是竊聽狀態
sniffers(嗅探器)幾乎和internet有一樣久的歷史了.Sniffer是一種常用的收集有用數據方法,這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。隨著Internet及電子商務的日益普及,Internet的安全也越來越受到重視。在Internet安全隱患中扮演重要角色之一的Sniffer以受到越來越大的關注,所以今天我要向大家介紹一下介紹Sniffer以及如何阻止sniffer。
大多數的黑客僅僅為了探測內部網上的主機並取得控制權,只有那些"雄心勃勃"的黑客,為了控制整個網路才會安裝特洛伊木馬和後門程序,並清除記錄。他們經常使用的手法是安裝sniffer。
在內部網上,黑客要想迅速獲得大量的賬號(包括用戶名和密碼),最為有效的手段是使用 "sniffer" 程序。這種方法要求運行Sniffer 程序的主機和被監聽的主機必須在同一個乙太網段上,故而在外部主機上運行sniffer是沒有效果的。再者,必須以root的身份使用sniffer 程序,才能夠監聽到乙太網段上的數據流。談到乙太網sniffer,就必須談到乙太網sniffing。
那麼什麼是乙太網sniffer呢?
乙太網sniffing是指對乙太網設備上傳送的數據包進行偵聽,發現感興趣的包。如果發現符合條件的包,就把它存到一個log文件中
去。通常設置的這些條件是包含字"username"或"password"的包。它的目的是將網路層放到promiscuous模式,從而能幹些事情。
Promiscuous模式是指網路上的所有設備都對匯流排上傳送的數據進行偵聽,並不僅僅是它們自己的數據。根據第二章中有關對乙太網的工作原理的基本介紹,可以知道:一個設備要向某一目標發送數據時,它是對乙太網進行廣播的。一個連到乙太網匯流排上的設備在任何時間里都在接受數據。不過只是將屬於自己的數據傳給該計算機上的應用程序。
利用這一點,可以將一台計算機的網路連接設置為接受所有以太
網匯流排上的數據,從而實現sniffer。
sniffer通常運行在路由器,或有路由器功能的主機上。這樣就能對大量的數據進行監控。sniffer屬第二層次的攻擊。通常是攻擊者已經進入了目標系統,然後使用sniffer這種攻擊手段,以便得到更多的信息。
sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個其他重要的信息,在網上傳送的金融信息等等。sniffer幾乎能得到任何乙太網上的傳送的數據包。黑客會使用各種方法,獲得系統的控制權並留下再次侵入的後門,以保證sniffer能夠執行。在Solaris 2.x平台上,sniffer 程序通常被安裝在/usr/bin 或/dev目錄下。黑客還會巧妙的修改時間,使得sniffer程序看上去是和其它系統程序同時安裝的。
大多數乙太網sniffer程序在後台運行,將結果輸出到某個記錄文件中。黑客常常會修改ps程序,使得系統管理員很難發現運行的sniffer程序。
乙太網sniffer程序將系統的網路介面設定為混合模式。這樣,它就可以監聽到所有流經同一乙太網網段的數據包,不管它的接受者或發送者是不是運行sniffer的主機。 程序將用戶名、密碼和其它黑客感興趣的數據存入log文件。黑客會等待一段時間 ----- 比如一周後,再回到這里下載記錄文件。
講了這么多,那麼到底我們可以用什麼通俗的話來介紹sniffer呢?
計算機網路與電話電路不同,計算機網路是共享通訊通道的。共享意味著計算機能夠接收到發送給其它計算機的信息。捕獲在網路中傳輸的數據信息就稱為sniffing(竊聽)。
乙太網是現在應用最廣泛的計算機連網方式。乙太網協議是在同一迴路向所有主機發送數據包信息。數據包頭包含有目標主機的正確地址。一般情況下只有具有該地址的主機會接受這個數據包。如果一台主機能夠接收所有數據包,而不理會數據包頭內容,這種方式通常稱為"混雜" 模式。
由於在一個普通的網路環境中,帳號和口令信息以明文方式在乙太網中傳輸, 一旦入侵者獲得其中一台主機的root許可權,並將其置於混雜模式以竊聽網路數據,從而有可能入侵網路中的所有計算機。
一句話,sniffer就是一個用來竊聽的黑客手段和工具。
二、sniffer的工作原理
通常在同一個網段的所有網路介面都有訪問在物理媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其他網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。(代表所有的介面地址),在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1、幀的目標區域具有和本地網路介面相匹配的硬體地址。
2、幀的目標區域具有"廣播地址"。
在接受到上面兩種情況的數據包時,nc通過cpu產生一個硬體中斷,該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。
而sniffer就是一種能將本地nc狀態設成(promiscuous)狀態的軟體,當nc處於這種"混雜"方式時,該nc具備"廣播地址",它對所有遭遇到的每一個幀都產生一個硬體中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。(絕大多數的nc具備置成 promiscuous方式的能力)
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據,並且通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
通常sniffer所要關心的內容可以分成這樣幾類:
1、口令
我想這是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd.就算你在網路傳送過程中使用了加密的數據,sniffer記錄的數據一樣有可能使入侵者在家裡邊吃肉串邊想辦法算出你的演算法。
2、金融帳號
許多用戶很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕松截獲在網上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin.
3、偷窺機密或敏感的信息數據
通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者乾脆攔截整個的email會話過程。
4、窺探低級的協議信息。
這是很可怕的事,我認為,通過對底層的信息協議記錄,比如記錄兩台主機之間的網路介面地址、遠程網路介面ip地址、ip路由信息和tcp連接的位元組順序號碼等。這些信息由非法入侵的人掌握後將對網路安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正在進行一次欺詐,(通常的ip地址欺詐就要求你准確插入tcp連接的位元組順序號,這將在以後整理的文章中指出)如果某人很關心這個問題,那麼sniffer對他來說只是前奏,今後的問題要大得多。(對於高級的hacker而言,我想這是使用sniffer的唯一理由吧)
二.sniffer的工作環境
snifffer就是能夠捕獲網路報文的設備。嗅探器的正當用處在於分析網路的流量,以便找出所關心的網路中潛在的問題。例如,假設網路的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什麼地方,此時就可以用嗅探器來作出精確的問題判斷。
嗅探器在功能和設計方面有很多不同。有些只能分析一種協議,而另一些可能能夠分析幾百種協議。一般情況下,大多數的嗅探器至少能夠分析下面的協議:
1.標准乙太網
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是軟硬體的結合。專用的嗅探器價格非常昂貴。另一方面,免費的嗅探器雖然不需要花什麼錢,但得不到什麼支持。
嗅探器與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器則捕獲真實的網路報文。嗅探器通過將其置身於網路介面來達到這個目的——例如將乙太網卡設置成雜收模式。(為了理解雜收模式是怎麼回事,先解釋區域網是怎麼工作的)。
數據在網路上是以很小的稱為幀(Ftame)的單位傳輸的幀由好幾部分組成,不同的部分執行不同的功能。(例如,乙太網的前12個位元組存放的是源和目的的地址,這些位告訴網路:數據的來源和去處。乙太網幀的其他部分存放實際的用戶數據、TCP/IP的報文頭或IPX報文頭等等)。
幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀的到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。
每一個在LAN上的工作站都有其硬體地址。這些地址唯一地表示著網路上的機器(這一點於Internet地址系統比較相似)。當用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。
在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單的忽略這些數據)。
如果某在工作站的網路介面處於雜收模式,那麼它就可以捕獲網路上所有的報文和幀,如果一個工作站被配置成這樣的方式,它(包括其軟體)就是一個嗅探器。
嗅探器可能造成的危害:
1.嗅探器能夠捕獲口令
2.能夠捕獲專用的或者機密的信息
3.可以用來危害網路鄰居的安全,或者用來獲取更高級別的訪問許可權
事實上,如果你在網路上存在非授權的嗅探器就以為著你的系統已經暴露在別人面前了。(大家可以試試天行2的嗅探功能)
一般我們只嗅探每個報文的前200到300個位元組。用戶名和口令都包含在這一部分中,這是我們關心的真正部分。工人,也可以嗅探給定介面上的所有報文,如果有足夠的空間進行存儲,有足夠的那裡進行處理的話,將會發現另一些非常有趣的東西……
簡單的放置一個嗅探器賓將其放到隨便什麼地方將不會起到什麼作用。將嗅探器放置於被攻擊機器或網路附近,這樣將捕獲到很多口令,還有一個比較好的方法就是放在網關上。如果這樣的話就能捕獲網路和其他網路進行身份鑒別的過程。這樣的方式將成倍地增加我們能夠攻擊的范圍。
三.誰會使用sniffers
可能誰都回知道誰會使用sniffer,但是並不是每個使用它的人都是網路高手,因為現在有很多的sniffer都成了傻瓜似的了,前段時間用的最多的不外乎oicq sniffer。我想那些喜歡查好友ip的朋友都應該記得它吧。呵呵,我都使用過它,現在當然不用了啊!
當然系統管理員使用sniffer來分析網路信息交通並且找出網路上何處發生問題。一個安全管理員可以同時用多種sniffer, 將它們放置在網路的各處,形成一個入侵警報系統。對於系統管理員來說sniffer是一個非常好的工具,但是它同樣是一個經常被黑客使用的工具.駭客安裝sniffer以獲得用戶名和賬號,信用卡號碼,個人信息,和其他的信息可以導致對你或是你的公司的極大危害如果向壞的方面發展。當它們得到這些信息後,駭客將使用密碼來進攻其他的internet 站點甚至倒賣信用卡號碼。
三.sniffer是如何在網路上實施的
談這個問題之前還應該先說一下Ethernet的通訊。通常在同一個網段的所有網路介面都有訪問在媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其它網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1�幀的目標區域具有和本地網路介面相匹配的硬體地址。
2�幀的目標區域具有「廣播地址」。
在接受到上面兩種情況的數據包時,網卡通過cpu產生一個硬體中斷。該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。而sniffer就是一種能將本地網卡狀態設成雜亂模式(promiscuous Mode)的軟體。當網卡處於雜亂模式時,該網卡具備「廣播地址」,它對所有遇到的每一個幀都產生一個硬體中斷以提醒操作系統處理每一個報文包。(絕大多數的網卡具備設置成雜亂模式的能力。
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據。通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
四.哪裡可以得到sniffer
我們講的sniffer,主要是在unix系統下運用的,至於那些oicq sniffer就不在我們討論的范圍。
Sniffer是黑客們最常用的入侵手段之一。你可以在經過允許的網路中運行sniffer,了解它是如何有效地危及本地機器安全。
Sniffer可以是硬體,也可以是軟體。現在品種最多,應用最廣的是軟體Sniffer,絕大多數黑客們用的也是軟體Sniffer。
以下是一些也被廣泛用於調試網路故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General開發了多種產品。最重要的是Expert Sniffer,它不僅僅可以sniff,還能夠通過高性能的專門系統發送/接收數據包,幫助診斷故障。還有一個增強產品"Distrbuted Sniffer System"可以將UNIX工作站作為sniffer控制台,而將sniffer agents(代理)分布到遠程主機上。
2. Microsoft's Net Monitor
對於某些商業站點,可能同時需要運行多種協議--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。這時很難找到一種sniffer幫助解決網路問題,因為許多sniffer往往將某些正確的協議數據包當成了錯誤數據包。Microsoft的Net Monitor(以前叫Bloodhound)可以解決這個難題。它能夠正確區分諸如Netware控制數據包、NT NetBios名字服務廣播等獨特的數據包。(etherfind只會將這些數據包標識為類型0000的廣播數據包。)這個工具運行在MS Windows 平台上。它甚至能夠按MAC地址(或主機名)進行網路統計和會話信息監視。只需簡單地單擊某個會話即可獲得tcpmp標準的輸出。過濾器設置也是最為簡單的,只要在一個對話框中單擊需要監視的主機即可。
(二).免費軟體sniffer
1. Sniffit由Lawrence Berkeley 實驗室開發,運行於Solaris、SGI和Linux等平台。可以選擇源、目標地址或地址集合,還可以選擇監聽的埠、協議和網路介面等。這個SNIFFER默認狀態下只接受最先的400個位元組的信息包,這對於一次登陸會話進程剛剛好。
2. SNORT:這個SNIFFER有很多選項供你使用並可移植性強,可以記錄一些連接信息,用來跟蹤一些網路活動。
3. TCPDUMP:這個SNIFFER很有名,linux,FREEBSD還搭帶在系統上,是一個被很多UNIX高手認為是一個專業的網路管理工具,記得以前TsutomuShimomura(應該叫下村侵吧)就是使用他自己修改過的TCPDUMP版本來記錄了KEVINMITNICK攻擊他系統的記錄,後來就配合FBI抓住了KEVINMITNICK,後來他寫了一文:使用這些LOG記錄描述了那次的攻擊,
( http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt )
4. ADMsniff:這是非常有名的ADM黑客集團寫的一個SNIFFER程序。
5. linsniffer:這是一個專門設計雜一LINUX平台上的SNIFFER。
6. Esniffer:這個也是一個比較有名的SNIFFER程序。
7. Solsniffer:這是個Solarissniffer,主要是修改了SunSniff專門用來可以方便的在Solair平台上編譯。
8. Ethereal是一基於GTK+的一個圖形化Sniffer
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
(三).UNIX下的sniffer
UNIX下的sniffer,我比較傾向於snoop.Snoop是按Solaris的標准製作的,雖然Snoop不像是Sniffer Pro那樣好,但是它是一個可定製性非常強的sniffer,在加上它是免費的(和Solaris附一起).誰能打敗它的地位?你可以在極短時間內抓獲一個信息包或是更加深的分析.如果你想學習如何使用snoop,看下面的url:
http://www.enteract.com/~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推薦Tcpmp。
[1].tcpmp的安裝
在linux下tcpmp的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。
1. rpm包的形式安裝
這種形式的安裝是最簡單的安裝方法,rpm包是將軟體編譯後打包成二進制的格式,通過rpm命令可以直接安裝,不需要修改任何東西。以超級用戶登錄,使用命令如下:
#rpm -ivh tcpmp-3_4a5.rpm
這樣tcpmp就順利地安裝到你的linux系統中。怎麼樣,很簡單吧。
2. 源程序的安裝
既然rpm包的安裝很簡單,為什麼還要採用比較復雜的源程序安裝呢?其實,linux一個最大的誘人之處就是在她上面有很多軟體是提供源程序的,人們可以修改源程序來滿足自己的特殊的需要。所以我特別建議朋友們都採取這種源程序的安裝方法。
· 第一步 取得源程序 在源程序的安裝方式中,我們首先要取得tcpmp的源程序分發包,這種分發包有兩種 形式,一種是tar壓縮包(tcpmp-3_4a5.tar.Z),另一種是rpm的分發包(tcpmp-3_4a5.src.rpm)。這兩種 形式的內容都是一樣的,不同的僅僅是壓縮的方式.tar的壓縮包可以使用如下命令解開:
#tar xvfz tcpmp-3_4a5.tar.Z
rpm的包可以使用如下命令安裝:
#rpm -ivh tcpmp-3_4a5.src.rpm
這樣就把tcpmp的源代碼解壓到/usr/src/redhat/SOURCES目錄下.
· 第二步 做好編譯源程序前的准備活動
在編譯源程序之前,最好已經確定庫文件libpcap已經安裝完畢,這個庫文件是tcpmp軟體所需的庫文件。同樣,你同時還要有一個標準的c語言編譯器。在linux下標準的c 語言編譯器一般是gcc。 在tcpmp的源程序目錄中。有一個文件是Makefile.in,configure命令就是從Makefile.in文件中自動產生Makefile文件。在Makefile.in文件中,可以根據系統的配置來修改BINDEST 和 MANDEST 這兩個宏定義,預設值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一個宏值表明安裝tcpmp的二進制文件的路徑名,第二個表明tcpmp的man 幫助頁的路徑名,你可以修改它們來滿足系統的需求。
· 第三步 編譯源程序
使用源程序目錄中的configure腳本,它從系統中讀出各種所需的屬性。並且根據Makefile.in文件自動生成Makefile文件,以便編譯使用.make 命令則根據Makefile文件中的規則編譯tcpmp的源程序。使用make install命令安裝編譯好的tcpmp的二進制文件。
總結一下就是:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
[2].Tcpmp的使用
tcpmp採用命令行方式,它的命令格式為:
tcpmp [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
[ -i 網路介面 ] [ -r 文件名] [ -s snaplen ]
[ -T 類型 ] [ -w 文件名 ] [表達式 ]
1. tcpmp的選項介紹
-a 將網路地址和廣播地址轉變成名字;
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出;
-dd 將匹配信息包的代碼以c語言程序段的格式給出;
-ddd 將匹配信息包的代碼以十進制的形式給出;
-e 在輸出行列印出數據鏈路層的頭部信息;
-f 將外部的Internet地址以數字的形式列印出來;
-l 使標准輸出變為緩沖行形式;
-n 不把網路地址轉換成名字;
-t 在輸出的每一行不列印時間戳;
-v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
-vv 輸出詳細的報文信息;
-c 在收到指定的包的數目後,tcpmp就會停止;
-F 從指定的文件中讀取表達式,忽略其它的表達式;
-i 指定監聽的網路介面;
-r 從指定的文件中讀取包(這些包一般通過-w選項產生);
-w 直接將包寫入文件中,並不分析和列印出來;
-T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程 調用)和snmp(簡單網路管理協議;)
2. tcpmp的表達式介紹
表達式是一個正則表達式,tcpmp利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網路上所有的信息包將會被截獲。
在表達式中一般如下幾種類型的關鍵字,一種是關於類型的關鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是一個網路地址,port 23 指明埠號是23。如果沒有指定類型,預設的類型是host.
第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網路地址是202.0.0.0 。如果沒有指明方向關鍵字,則預設是src or dst關鍵字。
第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數據介面網路)上的特定的網路協議,實際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和分析。其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpmp將會監聽所有協議的信息包。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'';
這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
(1)想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#tcpmp host 210.27.48.1
(2) 想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中適用括弧時,一定要
#tcpmp host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpmp ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令:
#tcpmp tcp port 23 host 210.27.48.1
3. tcpmp 的輸出結果介紹
下面我們介紹幾種典型的tcpmp命令的輸出信息
(1) 數據鏈路層頭信息
使用命令#tcpmp --e host ice
ice 是一台裝有linux的主機,她的MAC地址是0:90:27:58:AF:1A
H219是一台裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條命令的輸出結果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是顯示的時間, 847509是ID號,eth0 <表示從網路介面eth0 接受該數據包,eth0 >表示從網路介面設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包. 0:90:27:58:af:1a是主機ICE的MAC地址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.telnet 表明該數據包是從主機H219的33357埠發往主機ICE的TELNET(23)埠. ack 22535 表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760.
(2) ARP包的TCPDUMP輸出信息
使用命令#tcpmp arp
得到的輸出結果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 0:90:27:58:af:1a是主機ICE的MAC地址。
(3) TCP包的輸出信息
用TCPDUMP捕獲的TCP包的一般輸出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明從源地址到目的地址, flags是TCP包中的標志信息,S 是SYN標志, F (FIN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是數據包中的數據的順序號, ack是下次期望的順序號, window是接收緩存的窗口大小, urgent表明數據包中是否有緊急指針. Options是選項.
(4) UDP包的輸出信息
用TCPDUMP捕獲的UDP包的一般輸出信息是:
route.port1 > ice.port2: udp lenth
UDP十分簡單,上面的輸出行表明從主機ROUTE的port1埠發出的一個UDP數據包到主機ICE的port2埠,類型是UDP, 包的長度是lenth上面,我就詳細介紹了TCPDUMP的安裝和使用,希望會對大家有所幫助。如果想要熟練運用TCPDUMP這個LINUX環境下的SNIFFER利器,還需要大家在實踐中總結經驗,充分發揮它的威力。
(五).windows平台上的sniffer
我推薦netxray和sniffer pro軟體,想必大家都用過他們,不過我在這兒還要再簡單介紹一下他們。
netxray的使用說明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 這是一個ShareHub連接下的區域網
5.5.5.5 這是一個8080埠上的http/ftp proxy
Internet
啟動Capture,
⑸ linux-2.4 如何安裝 tcpmp
安裝過程參照以下步驟:
1、打開網址:www.tcpmp.org/ 下載 libpcap-1.0.0.tar.gz (512.0KB) 軟體包,通過命令 tar zxvf libpcap-1.0.0.tar.gz 解壓文件,並將其放入自定義的安裝目錄。
2、打開網址:flex.sourceforge.net/ 下載 flex-2.5.35.tar.gz (1.40MB) 軟體包,通過 tar zxvf flex-2.5.35.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
註:如果沒有編譯安裝此文件,在編譯安裝libpcap時,就會出現 「configure: error: Your operating system's lex is insufficient to compile libpcap.」的錯誤提示。
3、打開網址:ftp.gnu.org/gnu/bison/ 下載 bison-2.4.1.tar.gz (1.9MB) 軟體包,通過 tar zxvf bison-2.4.1.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
註:如果沒有編譯安裝此文件,在編譯安裝libpcap時,就會出現 "configure: WARNING: don't have both flex and bison; reverting to lex/yacc checking for capable lex... insufficient" 的錯誤提示。
4、打開網址:ftp.gnu.org/gnu/m4/ 下載 m4-1.4.13.tar.gz (1.2MB)軟體包,通過 tar zxvf m4-1.4.13.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
註:如果沒有編譯安裝此文件,在編譯安裝bison-2.4.1時,就會出現 「configure: error: GNU M4 1.4 is required」的錯誤提示。
5、而後依次進入目錄m4-1.4.13,bison-2.4.1,flex-2.5.35,libpcap-1.0.0 並執行以下命令:
(sudo) ./configure
(sudo) make
(sudo) make install