日常網路管理,有時會發現一些可疑IP,在探測內網,可能是網段掃瞄,也可能針對某個web服務做弱點探測。如果IP沒有造冊管理,光有IP,很難找到是哪台電腦,更別說找到兇手。

如果組織的網路配置,不是固定IP造冊管理,而是使用DHCP動態配置,有一些指令,可以用IP查詢電腦名稱或MAC。

例如用 ping -a <IP>,也許可以查到電腦名稱。

如果在同一網段,可以用arp -a ,也許可以查到與IP對應的MAC。

如果跨網段,在layer 3設備,可以試著查,跟IP對應的MAC。

如果用Linux做DHCP配置,可以寫個小程式,查詢IP、MAC與電腦名稱,詳見程式內註解。

指令用法:get-dhcp-leases.py <欲查詢的IP>

#!/home/william/venv/bin/python3                    # 請改成正確的 python 路徑
# -*- coding: utf-8 -*-
# Author:William Huang
# Date:2022/11/02
# venv/bin/pip3 install isc_dhcp_leases            # 安裝 isc_dhcp_leases 套件 
# program:get-dhcp-leases.py
# ln -s /home/william/get-dhcp-leases.py /usr/bin/get-dhcp-leases.py
# Ref. https://github.com/MartijnBraam/python-isc-dhcp-leases
#
# 引入處理命令列參數的模組
import argparse
# 引入處理linux dhcp租約資料庫的IscDhcpLeases類別
from isc_dhcp_leases import IscDhcpLeases

# 取得欲查詢的IP:args.ip
parser = argparse.ArgumentParser()
parser.add_argument('ip',help="get ip address.")
args=parser.parse_args()

# CentOS -- /var/lib/dhcpd/dhcpd.leases          # 不同版本Linux,dhcp資料庫放置位置不同
# OpenSuse -- /var/lib/dhcp/db/dhcpd.leases
# 產生IscDhcpLeases物件
leases = IscDhcpLeases('/var/lib/dhcpd/dhcpd.leases')  
# 回傳有效租約dict
dhcp_leases=leases.get() 

for x in dhcp_leases:
   if x.valid == True  and x.ip == args.ip:             # 輸出有效且IP等於查詢IP之租約
      print(x.start.strftime('%Y/%m/%d %H:%M:%S')+ " , " + x.ip + " , " + x.ethernet + " , " + x.hostname)

No comments

Leave your comment

In reply to Some User