網絡安全實驗報告
姓名: : 楊瑞春
班級: : 自動化 86
學號 :08045009
實驗一: 網絡命令操作與網絡協議分析 一.實驗目的: 1. 熟悉網絡基本命令的操作與功能。
2. 熟練使用網絡協議分析軟件 ethereal 分析應用協議。
二.實驗步驟: 1. 網絡命令: ping tracert netstat ipconfig telnet netcat Arp route nslookup Ssh 2. 協議分析軟件:ethereal 的主要功能:設置流量過濾條件,分析網絡數據包,流重組功能,協議分析。
三.實驗任務: 1.跟蹤某一網站如 google 的路由路徑
2.查瞧本機的 MAC 地址,ip 地址 輸入 ipconfig /all 找見本地連接、 Description 、 、 、、 、 : SiS 900-Based PCI Fast Ethernet Adapte Physical Address、、 、 : 00-13-8F-07-3A-57 DHCP Enabled、 、 、、 、 : No
IP Address、 、 、 、、 、 : 192、168、1、5 Subnet Mask 、 、 、、 、 : 255、255、255、0 Default Gateway 、、 、 : 192、168、1、1 DNS Servers 、 、 、、 、 : 61、128、128、67
192、168、1、1 Default Gateway 、、 、 : 192、168、1、1 這項就是網關、也就就是路由器 IP Physical Address、、 、 : 00-13-8F-07-3A-57 這項就就是 MAC 地址了、
3.telnet 到 linux 服務器,執行指定的命令
4、ssh 連接到 linux 服務器,執行指定的命令
5、nc 應用:telnet,綁定程序(cmd,shell 等),掃描,連接等。
6、選擇任意一種應用層協議如,qq 等,利用 ethereal 對該協議進行分析。實驗報告要求有 ethereal 捕獲的網絡流量與數據包協議解析的屏幕截圖。
7 分析 honeynet challenge dataset 的真實攻擊網絡流量 利用 ethereal 捕獲的網絡流量如下圖所示:
分析:從捕獲的網絡流量可以發現,有許多的SYN信號,但就是TCK信號很少,因此可以認為三次握手沒有建立,連接失敗。
實驗二: 黑客攻擊技術實驗 一.實驗要求: 1. 掌握典型攻擊技術原理 2. 熟悉典型攻擊軟件的功能及操作 3. 分析黑客攻擊軟件執行輸出結果 二.實驗內容: 1. namp 2. nessus 3. craft network packet: hping 4. crack password: john the ripper 5. web attack: nikto 6. google hacking tools 三.實驗任務 1 利用 winnmap 掃描功能,給出掃描報告及分析
2 nessus 應用,給出漏洞掃描報告
設置掃描策略
添加新掃描
掃描結果
掃描報告:
3、執行 nikto 對 web 服務器進行漏洞掃描。
4、john 應用及配置 在 run 目錄下運行 john-386 --wordlist=password、lst newxjtu、txt,對 newxjtu、txt中內容解密,會生成一個、pot 的文件,對同一密文只能解密一次,若刪除、pot 文件,可以再次解密。
破解后生成的明文為$LM$9eceeb689e046fcd:NEWXJTU $LM$aad3b435b51404ee:
5、google hacking tools 應用 打開 Google Hacking,在網站輸入框中輸入,點擊查詢網站詳情,可以在隨后彈出的網頁上查瞧交大網站的詳細信息,包括站點創建時間,IP 地址,IP 所在地,WEB 服務器等信息。
實驗三: 網絡安全技術實驗 一.實驗要求: 1. 掌握防火墻,VPN,入侵檢測系統等安全技術的基本原理與實現過程 2. 熟悉 IPSec、SSL、Kerberos、PGP 中的安全認證協議關鍵技術 3. 熟練使用 IPSec、SSL、Kerberos、PGP 等安全工具 二.實驗內容: 1. 防火墻 2. VPN 3. IPSec 4. SSL 5. Kerberos 6. PGP 7. Snort 三.實驗任務: 1、防火墻:利用個人防火墻軟件,定義防火墻規則,允許或就是禁止某類網絡流量的訪問。
2 、IPSec:windows 自帶的 IPSec 服務配置及使用。搭建一個 VPN,實現隧道模式,傳輸模式等功能。
(1)、啟用 xp 的遠程訪問組件,該組件默認不啟用。打開服務 services、msc,找到 Routing and
Remote Access 服務,設置啟動類型為自動,并啟動服務。
(2)、雙擊打開屬性,勾選“虛擬專用網”下的復選框。
打開“用戶頁”,選擇允許遠程撥入的用戶,或者新建用戶。
打開網絡頁,確保計算機上已經安裝了 IPX/SPX 協議。服務器上設置完成。
(3)、打開客戶機,打開網上鄰居,單擊創建一個新的連接。點擊“下一步” 單擊“連接到我的工作場所的網絡”
單擊“虛擬專用網絡連接”
輸入公司名,單擊下一步
輸入 VPN 服務器的 IP 地址,
單擊完成客戶機創建連接完畢。
(5)、打開剛剛創建好的連接,輸入允許介入的用戶名與密碼,單擊“連接”
網絡連接后,客戶機成功接入 XP VPN 服務器 3、SSL:openSSL 配置及使用 4. Kerberos:windows 實現的 kerberos 認證服務器配置及使用 5. PGP:GNUpgp
6、Snort:定義變量,配置規則,定義新的規則,學習攻擊檢測規則及報警分析 在使用 snort 之前請先安裝 wireshark,因為會用到其中的 winpcap: 1、將 snort 安裝在 C 盤根目錄下。
2、安裝完成后先把 rules、rar 解壓,將里面的文件全部直接放在 snort\rules\下 3、將 snort、conf 拷貝到 bin 目錄下 4、在 cmd 中執行 snort 的命令
Snort 掃描到的端口
查瞧 snort、conf
實驗四: 網絡安全軟件開發: 網絡掃描器 一.實驗目的: 1、熟悉網絡掃描器實現的關鍵技術 2、熟練運用 C#,java 開發網絡應用程序 3、熟悉網絡協議字段含義及結構 二.實驗內容: 1、網絡掃描器實現基本的地址掃描,端口掃描,TCP/UDP 掃描,實現多線程掃描。
2、圖形化界面的網絡掃描器軟件 3、提交源代碼、可執行程序及代碼注釋文件及執行結果截圖。
三.實驗分析:
多線程:電腦上有322個端口。如果只啟動一個線程的話322個端口需要的時間可以用小時計算。解決這個問題需要用到多線程原理。多線程實現可通過繼承 Thread 類或者實現 Runnable接口來達到。
主機端口掃描:與目標主機創建 TCP 連接,如果成功則說明端口監聽中,同事對正在監聽的端口做識別操作!默認按照常用端口服務給出提示!例如 21,則提示 ftp 服務。UDP 掃描就是向目標主機端口發送固定字符,讀取目標主機回復內容!
TCP 掃描原理:利用 java、net、Socket 類建立 socket 連接,如果無法與指定的 IP 與端口建立連接,將會拋出 IOException。我們用 try-catch 對這個 IOException 異常進行捕獲,以判斷就是否成功與指定的 IP 端口建立連接。如果成功建立了連接,說明指定 IP 的指定端口已經開放;如果程序拋出了一個 IOException 異常被我們捕獲,則說明指定的 IP 沒有開放指定的端口。掃描指定端口段則就是利用循環不斷與服務器的指定端口進行連接,供我們判斷就是否開放。
UDP 掃描原理:這種方法使用的就是 UDP 協議。由于這個協議很簡單,所以掃描變得相對比較困難。這就是由于打開的端口對掃描探測并不發送一個確認,關閉的端口也并不需要發送一個錯誤數據包。幸運的就是,許多主機在您向一個未打開的 UDP 端口發送一個數據包時,會返回一個 ICMP_PORT_UNREACH 錯誤。這樣您就能發現哪個端口就是關閉的。UDP 與ICMP 錯誤都不保證能到達,因此這種掃描器必須還實現在一個包瞧上 去就是丟失的時候能重新傳輸。這種掃描方法就是很慢的,因為 RFC 對 ICMP 錯誤消息的產生速率做了規定。同樣,這種掃描方法需要具有 root 權限。利用 java、net、DatagramSocket 類給指導 IP 發送DatagramPacket 數據包,如果捕獲到 java、net、PortUnreachableException 異常,說明對方主機返回了ICMP_PORT_UNREACH的錯誤,說明端口關閉,否則如果在指定等待時間內沒有得到回復,則捕獲到 java、net、SocketTimeoutException 連接超時異常,說明端口就是開放的。
斷 判斷 IP 地址與端口合法性:在得到端口與建立 socket 之前一定要判斷 IP 地址與端口的合法性,因為端口的范圍就是在 1~65535,如果我們去建立范圍外端口的連接就就是沒必要的,而且就是不可行的。IP 地址表示成 XX、XX、XX、XX 格式,XX 范圍在 0~255 之間,在這之外就是不合法的。
圖形化界面(GUI) 設計:主要用到了 java、awt 提供的與圖形界面相關的類。為了使界面更美觀使用了 swing 組件。
socket 中的 close 方法:不需要一個 socket 的時候應關閉它,因為 socket 就是一種有限的系統資源。關閉 socket 將釋放有關的資源,并允許綁定在此 socket 上的端口被重新使用。Socket被關閉之后就不能再向它收發數據 UDP 缺陷說明:開放的 UDP 端口并不需要送回 ACK 包,而關閉的端口也不要求送回錯誤包(而本實驗基于的原理就就是那些主機在關閉的UDP端口會回送ICMP Port Unreachable錯誤,因此有很大的幾率誤判,由于時間原因與自身知識的局限不能想到更好的方法),所以利用UDP 包進行掃描非常困難。UDP 包與 ICMP 包都就是不可靠的,速度慢(差錯報文產生的速度有限制),并且需要 root 權限才能讀取 ICMP 消息,因此使用的局限性好大。
四.實驗結果: 1、 初始界面:
2 、對站點 127、0、0、1 進行 TCP 掃描:
3 、對站點 127、0、0、1 進行 UDP 掃描:
實驗源代碼: /*基于多線程端口掃描程序源代碼*/ import java、awt、Color;
//類的調用 import java、awt、Container; import java、awt、Label; import java、awt、TextArea; import java、awt、event、ActionEvent; import java、awt、event、ActionListener; import java、awt、event、WindowAdapter; import java、awt、event、WindowEvent; import java、io、IOException; import java、net、InetAddress; import java、net、InetSocketAddress; import java、net、Socket; import java、net、SocketAddress; import java、net、DatagramPacket; import java、net、DatagramSocket; import java、net、UnknownHostException; import javax、swing、JButton; import javax、swing、JDialog; import javax、swing、JFrame; import javax、swing、JTextField; public class Scanner implements ActionListener{
// 創建主窗口
public static JFrame mainFrame = new JFrame();
public static Label labelIP = new Label("主機 IP");
public static Label labelPortStart = new Label("起始端口:");
public static Label labelPortEnd = new Label("結束端口:");
public static Label labelThread = new Label("線程數:");
public static Label labelResult = new Label("掃描結果:");
public static Label State = new Label("掃描狀態:");
public static Label Scanning = new Label("未開始掃描");
public
static JTextField hostName = new JTextField("172、22、65、10");
public static JTextField PortStart = new JTextField("0");
public static JTextField PortEnd = new JTextField("100");
public static JTextField ThreadNum = new JTextField("10");
// 文本區域,顯示掃描結果
public static TextArea Result = new TextArea();
public static Label DLGINFO = new Label("");
public static JButton Start = new JButton("TCP 掃描");
public static JButton Start2 = new JButton("UDP 掃描");
public static JButton Exit = new JButton("退出");
//
錯誤提示對話框
public static JDialog DLGError = new JDialog(mainFrame, "錯誤");
public static JButton OK = new JButton("確定");
public Scanner(){//GUI 界面
// 設置主窗體名稱
mainFrame、setTitle("多線程端口掃描器");
// 設置主窗體位置與大小
mainFrame、setBounds(180, 200, 550, 300);
mainFrame、addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System、exit(0);
}
});
// 設置錯誤提示框
Container dPanel = DLGError、getContentPane();
dPanel、setLayout(null);
dPanel、add(DLGINFO);
dPanel、add(OK);
dPanel、setBackground(new Color(153,255,204));
OK、setActionCommand("ok");
OK、addActionListener(this);
// 在主窗體中添加其她組件
mainFrame、setLayout(null);
mainFrame、setResizable(false);
mainFrame、add(Start);
mainFrame、add(Start2);
mainFrame、add(Exit);
mainFrame、add(labelIP);
mainFrame、add(hostName);
mainFrame、add(labelPortStart);
mainFrame、add(labelPortEnd);
mainFrame、add(PortStart);
mainFrame、add(PortEnd);
mainFrame、add(labelThread);
mainFrame、add(ThreadNum);
mainFrame、add(labelResult);
mainFrame、add(Result);
mainFrame、add(State);
mainFrame、add(Scanning);
// 設置掃描按鈕與退出按鈕
Start、setBounds(350, 232, 100, 30);
Start、setActionCommand("Start");
Start、addActionListener(this);
Start、setBackground(new Color(153,255,204));
Start2、setBackground(new Color(153,255,204));
Start2、setBounds(250, 232, 100, 30);
Start2、setActionCommand("Start2");
Start2、addActionListener(this);
Exit、setBounds(475, 232, 60, 30);
Exit、setActionCommand("Exit");
Exit、addActionListener(this);
Exit、setBackground(new Color(153,255,204));
labelIP、setBounds(17, 13, 50, 20);
hostName、setBounds(67, 10, 92, 25);
hostName、setHorizontalAlignment(JTextField、CENTER);
labelPortStart、setBounds(162, 13, 60, 20);
PortStart、setBounds(227, 10, 45, 25);
PortStart、setHorizontalAlignment(JTextField、CENTER);
labelPortEnd、setBounds(292, 13, 60, 20);
PortEnd、setBounds(357, 10, 45, 25);
PortEnd、setHorizontalAlignment(JTextField、CENTER);
labelThread、setBounds(422, 13, 50, 20);
ThreadNum、setBounds(477, 10, 45, 25);
ThreadNum、setHorizontalAlignment(JTextField、CENTER);
labelResult、setBounds(1, 45, 55, 20);
Result、setBounds(1, 65, 542, 160);
Result、setEditable(false);
Result、setBackground(new Color(204,255,51));//設置顯示結果窗口顏色 RGB
State、setBounds(17, 232, 60, 30);
Scanning、setBounds(80, 232, 120, 30);
mainFrame、setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String cmd = e、getActionCommand();
//得到明明處理事件
if(cmd、equals("Start")||cmd、equals("Start2")){
//啟動掃描線程
try {
Scan、hostAddress = InetAddress、getByName(Scanner、hostName、getText());
Scan2、hostAddress = InetAddress、getByName(Scanner、hostName、getText());
} catch (UnknownHostException e1) {
DLGError、setBounds(300, 280, 160, 110);
DLGINFO、setText("錯誤的 IP 地址/域名");
DLGINFO、setBounds(25, 15, 100, 20);
OK、setBounds(45, 40, 60, 30);
DLGError、setVisible(true);
return ;
}
int minPort ;
int maxPort ;
int threadNum ;
// 獲取輸入數據
try {
minPort = Integer、parseInt(PortStart、getText());
maxPort = Integer、parseInt(PortEnd、getText());
threadNum = Integer、parseInt(ThreadNum、getText());
} catch (NumberFormatException e1) {
DLGError、setBounds(300, 280, 299, 120);
DLGINFO、setText("錯誤的端口號或線程數!端口號與線程數必須為整數!");
DLGINFO、setBounds(10, 20, 280, 20);
OK、setBounds(110, 50, 60, 30);
DLGError、setVisible(true);
return;
}
// 輸入信息錯誤處理
if((minPort < 0)||(maxPort > 65535)||(minPort > maxPort)){
DLGError、setBounds(300, 280, 295, 120);
DLGINFO、setText("最小端口必須就是 0-65535 并且小于最大端口的整數");
DLGINFO、setBounds(10, 20, 280, 20);
OK、setBounds(120, 50, 60, 30);
DLGError、setVisible(true);
return ;
}
if((threadNum > 200)|| (threadNum < 0)){
DLGError、setBounds(300, 280, 184, 120);
DLGINFO、setText("進程數必須就是 1-200 中的整數");
DLGINFO、setBounds(10, 20, 200, 20);
OK、setBounds(55, 50, 60, 30);
DLGError、setVisible(true);
return ;
}
Result 、 append(" 正 在 掃 描 " + hostName 、 getText() + " 線 程數:"+threadNum+"\n");
Scanning、setText("開始掃描 、、、");
Result、append("開始端口 " + minPort + " 結束端口 " + maxPort + " \n");
if(cmd、equals("Start"))//啟動 TCP 掃描線程
{
for(int i = minPort;i <= maxPort; ) {
if((i + threadNum) <= maxPort) {
new Scan(i, i + threadNum)、start();
i += threadNum;
}
else {
new Scan(i, maxPort)、start();
i += threadNum;
}
}
}
else
if(cmd、equals("Start2"))//啟動 UDP 掃描線程
{
for(int i = minPort;i <= maxPort; ) {
if((i + threadNum) <= maxPort) {
new Scan2(i, i + threadNum)、start();
i += threadNum;
}
else {
new Scan2(i, maxPort)、start();
i += threadNum;
}
}
}
try {
Thread、sleep(3000);//設置處理等待時間
} catch (InterruptedException e1) {
e1、printStackTrace();
}
Result、append("掃描完成!\n");
Scanning、setText("掃描完成!");
}
else if(cmd、equals("ok")){
DLGError、dispose();
}
else if(cmd、equals("Exit")){
System、exit(1);
}
}
public static void main(String[] args) {
new Scanner();
} } //TCP Scan class class Scan extends Thread{
int maxPort, minPort;
public static InetAddress hostAddress;
Scan(int minPort, int maxPort){
this、minPort = minPort;
this、maxPort = maxPort;
}
public void run(){
// 掃描指定端口
for(int i = minPort;i < maxPort; i++){
Scanner、Scanning、setText("正在掃描"+i+"端口");
try {
// 根據主機名與端口號創建套接字地址。
SocketAddress sockaddr = new InetSocketAddress(hostAddress, i);
Socket scans=new Socket();
int timeoutMs=50;
// 將此套接字連接到具有指定超時值的服務器。
scans、connect(sockaddr, timeoutMs);
// 關閉此套接字。
scans、close();
// 添加結果顯示
Scanner、Result、append("主機:" + Scanner、hostName、getText() + " TCP端口:" + i);
switch(i){//通用 TCP 端口作用顯示
case 20: Scanner、Result、append("()");break;
case 21: Scanner、Result、append("()");break;
case 23: Scanner、Result、append("(TELNET)");break;
case 25: Scanner、Result、append("(SMTP)");break;
case 38: Scanner、Result、append("(RAP)");break;
case 53: Scanner、Result、append("(DNS)");break;
case 79: Scanner、Result、append("FINGER");break;
case 80: Scanner、Result、append("(HTTP)");break;
case 139: Scanner、Result、append("(netBIOS)");break;
case 110: Scanner、Result、append("(POP)");break;
case 161: Scanner、Result、append("(SNMP)");break;
case 443: Scanner、Result、append("(HTTPS)");break;
case 1433: Scanner、Result、append("(SQL)");break;
case 1521: Scanner、Result、append("(Oracle)");break;
case 3389: Scanner、Result、append("(Terminal Service)");break;
case 8000: Scanner、Result、append("(OICQ)");break;
}
Scanner、Result、append(" 開放\n");
} catch (IOException e) {
}
}
} } //UDP Scan class class Scan2 extends Thread
{
int maxPort, minPort,port;
public static InetAddress hostAddress;
Scan2(int minPort, int maxPort)
{
this、minPort = minPort;
this、maxPort = maxPort;
} public void run()
{
for(int port=minPort;port<=maxPort;port++)
{
DatagramSocket connection = null;
byte[] myByte = hostAddress、toString()、getBytes();
String myStr = new String(myByte);
try
{ //connection = new DatagramSocket(port, InetAddress 、getByName(ipAddress));//(ipAddress, port);
connection = new DatagramSocket( );//(ipAddress, port);
//connection、setReceiveTimeout(20*1000);
connection、setSoTimeout(60*1000);
Scanner、Scanning、setText("正在掃描"+port+"端口");
connection、connect( hostAddress, port);
System、out、println(port+"連結創建完成、、、");
connection、send((new DatagramPacket(myByte, myByte、length)));
System、out、println(" 數據發送完成、、、");
while(true)
{
byte[] newByte = new byte[4096];
DatagramPacket dp = new DatagramPacket(newByte, 4096);
connection、receive(dp);
if (dp != null && dp、getData() != null)
{
System、out、println(dp、getLength());
System、out、println("#####");
byte[] rslt = dp、getData();
for (int i = 0;i < dp、getLength(); i++)
{ System、out、println(rslt);
}
System、out、println("#####");
}
break;
}
connection、close();
}
catch(java、net、PortUnreachableException e)//ICMP 不可達
{
System、out、println(port+"UDP 端口關閉了\n");
}
catch(java、net、SocketTimeoutException e)//連接超時
{
Scanner、Result、append(port+"UDP 端口打開\n");
}
catch(Exception ex)
{
ex、printStackTrace();
}
} } }
推薦訪問: 網絡安全 實驗 報告下一篇:【推薦】個人自查報告
同志們:今天這個大會,是市委全面落實黨要管黨、從嚴治黨要求的一項重大舉措,也是對縣市區委書記履行基層黨建工作第一責任人情況的一次集中檢閱,同時是對全市基層黨建工作的一次再部署、再落實的會議。前面,**
***年,我認真履行領班子、帶隊伍、抓黨員、保穩定的基層黨建工作思路,以學習貫徹習近平新時代中國特色社會主義思想和黨的十九大歷次全會精神為主線,以市局基層黨建工作考核細則為落腳點,落實全面從嚴治黨主體
根據會議安排,現將2022年履行抓基層黨建工作職責情況報告如下:一、履職工作特色和亮點1 突出政治建設,著力在思想認識上提高。牢固樹立抓黨建就是抓政績的理念,以“黨建工作抓引領、社區治理求突破,為民服
2022年以來,在**黨委的正確領導下,堅持以習近平新時代中國特色社會主義思想為指導,深入學習宣傳貫徹黨的二十大精神,以黨建工作為統領,扎實開展夯實“三個基本”活動,以“四化四力”行動為抓手,聚力創建
各位領導,同志們:根據會議安排,現就2022年度抓基層黨建工作情況匯報如下:一、主要做法及成效(一)強化政治引領。一是不斷強化理論武裝。堅持通過黨組會、中心組學習會和“三會一課”,第一時間、第一議題學
2022年度抓基層黨建工作述職報告按照黨委工作部署,現將本人2022年度抓基層黨建工作情況報告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發展首要位置,積極開展
2022年,是我在數計系黨總支書記這個新崗位上度過的第一個完整的工作年度。回首一年來在校黨委的正確領導下,與數計系領導班子和全體師生共同走過的日子,艱辛歷歷在目,收獲溫潤心田。作為黨總支書記,我始終牢
按照考核要求,現將本人一年來,作為統戰部長履行職責、廉潔自律等方面情況報告如下:一、著眼增強政治素質,不斷深化理論學習堅持把旗幟鮮明講政治作為履職從政的第一位要求,帶領統戰系統干部堅決擁護“兩個確立”
**年,緊緊圍繞黨工委、管委會的決策部署,全體人員團結協作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進取,認真履職盡責,圓滿完成各項工作任務。一、個人思想政治狀況檸檬文苑www bgzjy
按照縣委關于開展抓基層黨建述職評議會議的有關要求,經請示縣委組織部同意,今天,我們在此召開2022年度基層黨組織書記抓基層黨建述職評議會議。1 首先,請**黨委書記,**同志述職。**黨委能夠主動研究