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