自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux服務(wù)器安全事件應(yīng)急的一些隨筆 - 備份篇

運(yùn)維 服務(wù)器運(yùn)維
最近連著碰到幾起Linux服務(wù)器的安全應(yīng)急響應(yīng),之前這方面的經(jīng)驗(yàn)也不是很足,都是平時(shí)刷刷大家寫的文章靠著一些Linux下的基礎(chǔ)知識(shí)去分析著這幾次碰到的事件,事后想想,在面對(duì)這幾次的應(yīng)急事件有很多地方考慮的不是很全面,隨寫此文紀(jì)錄下心中所想。盡量用系統(tǒng)本身最基礎(chǔ)的功能完成前期應(yīng)急取證的備份工作。

前言

最近連著碰到幾起Linux服務(wù)器的安全應(yīng)急響應(yīng),之前這方面的經(jīng)驗(yàn)也不是很足,都是平時(shí)刷刷大家寫的文章靠著一些Linux下的基礎(chǔ)知識(shí)去分析著這幾次碰到的事件,事后想想,在面對(duì)這幾次的應(yīng)急事件有很多地方考慮的不是很全面,隨寫此文紀(jì)錄下心中所想。盡量用系統(tǒng)本身最基礎(chǔ)的功能完成前期應(yīng)急取證的備份工作。

劃重點(diǎn)

重要的事情說四遍

備份! 備份!備份!備份!

原始數(shù)據(jù)的備份在應(yīng)急響應(yīng)分析過程中的重要性不言而喻,但在這幾次的應(yīng)急事件中甲方爸爸貌似都忽略了這個(gè)問題,當(dāng)我們到達(dá)現(xiàn)場(chǎng)的時(shí)候,甲方爸爸要么是已經(jīng)將被入侵服務(wù)器糟蹋了一波,要么是備份了,也只備份了一波日志。

[[241853]]

系統(tǒng)鏡像備份

備份

  1. # dd if=/dev/sda of=bak.img 

恢復(fù)

  1. # dd if=bak.img of=/dev/sdb 

fdisk -l 查看磁盤分區(qū)情況

  1. # fdisk -lDisk /dev/sda: 8589 MB, 8589934592 bytes255 heads, 63 sectors/track, 1044 cylinders 
  2. Units = cylinders of 16065 * 512 = 8225280 bytes 
  3. Sector size (logical/physical): 512 bytes / 512 bytes 
  4. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  5. Disk identifier: 0x000a7707 
  6.  
  7.    Device Boot      Start         End      Blocks   Id  System 
  8. /dev/sda1   *           1        1013     8136891   8e  Linux LVM 
  9. /dev/sda2            1014        1044      249007+   5  Extended 
  10. /dev/sda5            1014        1044      248976   83  Linux 

df -h 查看磁盤占用情況

  1. # df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/brokenwebapps-root                      7.3G  5.8G  1.2G  84% /none                  497M  176K  497M   1% /devnone                  502M   12K  502M   1% /dev/shmnone                  502M  300K  501M   1% /var/runnone                  502M     0  502M   0% /var/locknone                  502M     0  502M   0% /lib/init/rwnone                  7.3G  5.8G  1.2G  84% /var/lib/ureadahead/debugfs 
  2. /dev/sda5             228M   44M  173M  21% /boot 
  3. /dev/sdb1              12G  159M   12G   2% /test 

# dd if=/dev/sda of=bak.img 進(jìn)行備份,等個(gè)幾分鐘,備份完成

備份完成后發(fā)送至我們的分析系統(tǒng)

  1. # scp bak.img root@192.168.232.132:/root/ 

掛載分析

  1. 分析系統(tǒng)環(huán)境 - kali 

通過losetup命令虛擬一個(gè)loop設(shè)備掛載鏡像

查看第一個(gè)空閑loop設(shè)備

  1. # losetup -f/dev/loop0 

創(chuàng)建loop設(shè)備

  1. # losetup /dev/loop0 bak.img 
  2.  
  3. # fdisk -lDisk /dev/loop0: 8 GiB, 8589934592 bytes, 16777216 sectors 
  4. Units: sectors of 1 * 512 = 512 bytes 
  5. Sector size (logical/physical): 512 bytes / 512 bytes 
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  7. Disklabel type: dos 
  8. Disk identifier: 0x000a7707Device       Boot    Start      End  Sectors   Size Id Type 
  9. /dev/loop0p1 *          63 16273844 16273782   7.8G 8e Linux LVM 
  10. /dev/loop0p2      16273845 16771859   498015 243.2M  5 Extended 
  11. /dev/loop0p5      16273908 16771859   497952 243.1M 83 Linux 

通過fdisk -l 我們可以看到我們的鏡像中有三個(gè)分區(qū),所以我們需要將每個(gè)分區(qū)單獨(dú)映射出來,然后再進(jìn)行掛載。

這里通過kpartx來進(jìn)行分區(qū)表的讀取和映射

  1. # kpartx -av /dev/loop0  
  2. add map loop0p1 (254:0): 0 16273782 linear 7:0 63add map loop0p2 (254:1): 0 2 linear 7:0 16273845add map loop0p5 (254:2): 0 497952 linear 7:0 16273908 

映射完畢后我們通過

  1. ls -l /dev/mapper/ 
  2.  
  3. lrwxrwxrwx 1 root root       7 Nov  6 07:46 brokenwebapps-root -> ../dm-3lrwxrwxrwx 1 root root       7 Nov  6 07:46 brokenwebapps-swap_1 -> ../dm-4crw------- 1 root root 10, 236 Nov  6 07:46 control 
  4. lrwxrwxrwx 1 root root       7 Nov  6 07:46 loop0p1 -> ../dm-0lrwxrwxrwx 1 ro 

查看下映射關(guān)系。Linux下的mapper設(shè)備是內(nèi)核中提供的一種從邏輯設(shè)備到物理設(shè)備的映射機(jī)制,通過該設(shè)備我們可以很清楚的看到root分區(qū)所在位置

mount掛載

下面我們將root分區(qū)掛載到我們的test目錄

  1. # mount /dev/mapper/brokenwebapps-root /test/ 

切換到test目錄查看,整個(gè)文件系統(tǒng)已經(jīng)被還原到我們的分析系統(tǒng)上

下面我們就可以在我們的分析系統(tǒng)上對(duì)被入侵主機(jī)進(jìn)行更加深入的分析了

卸載

  1. # umount /dev/mapper/brokenwebapps-root卸載kpartx映射# kpartx -dv /dev/loop0若無法卸載可先通過lvremove命令卸載映射出的邏輯設(shè)備再通過kpartx卸載映射 
  2. 卸載loop設(shè)備# losetup -a        查看當(dāng)前創(chuàng)建的loop設(shè)備/dev/loop0: [2049]:2107674 (/root/bak.img)# losetup -d /dev/loop0    卸載 

內(nèi)存鏡像備份

測(cè)試環(huán)境:

  1. Linux kali 4.9.0-kali4-amd64 #1 SMP Debian 4.9.30-2kali1 (2017-06-22) x86_64 GNU/Linux 

在比較老的Linux上,通常內(nèi)核版本為2.6以下的,應(yīng)該是還可以通過dd命令進(jìn)行內(nèi)存鏡像備份的

命令大概長這樣:

  1. dd if=/dev/mem of=dumpmem.dd bs=1024 

通過dd命令dump出/dev/mem設(shè)備的內(nèi)容完成內(nèi)存的備份,但是2.6以下版本的內(nèi)核在平??赡懿皇翘嘁娝晕乙矝]具體測(cè)試這個(gè)命令導(dǎo)出的具體效果。

2.6及以上的版本由于Linux安全性要求,其開始限制我們直接對(duì)系統(tǒng)內(nèi)存的訪問。所以內(nèi)存的備份我們可能要違背一下初心,需要引用第三方的模塊來完成我們的工作

一開始我嘗試使用的工具是fmem,他通過將自己加載到Linux內(nèi)核中運(yùn)行,通過創(chuàng)建/dev/fmem設(shè)備使我們可以繼續(xù)使用dd命令來備份我們的內(nèi)存。奈何我沒編譯成功,因?yàn)檎业哪M環(huán)境為owasp的一個(gè)漏洞環(huán)境,然而其源已經(jīng)連接不上了導(dǎo)致我無法去更新內(nèi)核的開發(fā)包,也就沒法編譯成功了,轉(zhuǎn)戰(zhàn)kali,編譯也出問題,大概也是內(nèi)核版本不匹配,有機(jī)會(huì)在研究下能不能搞定他。

前面說到由于一開始用的環(huán)境無法更新內(nèi)核開發(fā)包了,所以注明下以下的操作皆在kali下完成的,kali的具體內(nèi)核版本開頭已說明

在繼續(xù)說內(nèi)存鏡像備份前先瞎說一波內(nèi)核模塊的加載,反正也不是什么正兒八經(jīng)的討論內(nèi)核

先引用下度娘百科吧。

大概就可以理解為Linux的內(nèi)核是一塊支持熱插拔的板卡,在其運(yùn)行過程中我們可以隨時(shí)插入一個(gè)功能板,為其擴(kuò)展功能。在不用的時(shí)候我們又可以將這塊功能板給拔掉。這樣我們就可以在不用修改內(nèi)核的情況下擴(kuò)展了其功能。前面提到的fmem也是運(yùn)用到了Linux內(nèi)核的這個(gè)特性,下面要用的這個(gè)工具也是運(yùn)行的這個(gè)特性。

在Linux中我們可以通過

lsmod 查看有哪些功能版正插在板卡上

insmod 插入一塊新的功能版

rmmod 拔出一塊功能版

內(nèi)存?zhèn)浞莨ぞ週iME

https://github.com/504ensicslabs/lime

git下源碼丟進(jìn)kali里進(jìn)行編譯假設(shè)你編譯有問題,比如類似的這種錯(cuò)誤

  1. make -C /lib/modules/2.6.32-25-generic-pae/build M="/test/LiME/src" modules 
  2. make[1]: Entering directory `/lib/modules/2.6.32-25-generic-pae/build' 
  3. make[1]: *** No rule to make target `modules'.  Stop. 
  4. make[1]: Leaving directory `/lib/modules/2.6.32-25-generic-pae/build'make: *** [default] Erro 

你可能需要這個(gè)命令

  1. apt-get install linux-headers-$(uname -r) 

去安裝當(dāng)前內(nèi)核的開發(fā)包完成LiME的編譯

記得安裝完內(nèi)核開發(fā)包后前往/lib/modules/xxxx-amd64目錄下查看有沒有build和source的軟鏈接

沒有的話通過下面命令創(chuàng)建一下

  1. ln -s /usr/src/linux-headers-x.xx.x-x-amd64 build 
  2. ln -s /usr/src/linux-headers-x.xx.x-x-common source 

沒什么其他錯(cuò)誤的話我們就可以加載這個(gè)模塊進(jìn)行內(nèi)存?zhèn)浞萘?/p>

進(jìn)入其src目錄進(jìn)行編譯# makemake -C /lib/modules/4.9.0-kali4-amd64/build M="/root/Github/LiME/src" modules

  1. make[1]: Entering directory '/usr/src/linux-headers-4.9.0-kali4-amd64' 
  2.   Building modules, stage 2. 
  3.   MODPOST 1 modules 
  4.   LD [M]  /root/Github/LiME/src/lime.ko 
  5. make[1]: Leaving directory '/usr/src/linux-headers-4.9.0-kali4-amd64'strip --strip-unneeded lime.ko 
  6. mv lime.ko lime-4.9.0-kali4-amd64.ko 

編譯成功后會(huì)在當(dāng)前目錄生成lime-4.9.0-kali4-amd64.ko文件

執(zhí)行命令

  1. # insmod ./lime-4.9.0-kali4-amd64.ko "path=/test/testmem.lime format=lime" 

稍等片刻完成內(nèi)存的備份,其中path參數(shù)為備份內(nèi)存保存的路徑,format為保存格式,建議使用lime格式,方便我們后面通過volatility進(jìn)行分析

簡(jiǎn)單的先測(cè)試下剛剛備份的內(nèi)存是否可以被volatility識(shí)別

  1. # python vol.py -f /test/testmem.lime --profile=Linuxkalix64 limeinfoVolatility Foundation Volatility Framework 2.6 
  2. Memory Start       Memory End         Size               
  3. ------------------ ------------------ ------------------ 
  4. 0x0000000000001000 0x000000000009f3ff 0x000000000009e400 
  5. 0x0000000000100000 0x00000000546dffff 0x00000000545e0000 
  6. 0x0000000054700000 0x00000000547fffff 0x0000000000100000 

內(nèi)存?zhèn)浞萃旰笮遁dlime模塊

很無奈的備份

安全應(yīng)急實(shí)施過程中有時(shí)候甲方爸爸也不一定讓你搞這搞那,一句話,你要啥日志~ 我~ 甲方爸爸~ 給日志~

這時(shí)難免被這王霸之氣震驚,隨記錄下需要備份哪些日志以及文件以免遺漏

打包打包打包

/var/log完整打包

視具體情況而定,假設(shè)日志過多情況下,則可能需要我們進(jìn)行篩選打包

  1. # tar -czvf xx_var_log_time.tar.gz /var/log 

針對(duì)web入侵應(yīng)急還需備份出web應(yīng)用,nginx日志等

經(jīng)常會(huì)遺漏的一些內(nèi)容

備份passwd和shadow文件分析是否存在可疑賬號(hào)

比如某些本該是系統(tǒng)用戶的賬號(hào)卻存在了口令字段

  1. # cat /etc/passwd > etc_passwd.txt# cat /etc/shadow > etc_shadow.txt 

備份當(dāng)前網(wǎng)絡(luò)連接情況# netstat -anp > netstat_anp.txt

備份歷史命令# cp ~/.bash_history bash_history.txt帶時(shí)間和執(zhí)行者格式備份

  1. history# export HISTTIMEFORMAT="%Y-%m-%d:%H-%M-%S:`whoami`:"# history > history.txt 

備份用戶登錄信息

  1. # w > col_users.txt# lastlog > lastlog.txt 

查找最近5天被修改的文件#find / -type f -mtime +5

備份進(jìn)程信息

  1. # ps -ef > ps_ef.txt# ps aux > ps_aux.txt 

備份重要文件或命令的md5值

懶人辦法:

設(shè)置要備份的目錄# TESTDIR='/bin/'# find $TESTDIR -type f -print0 | xargs -0 md5sum > dir_bin_cmd.md5備份出bin目錄下所有命令的md5值

生成完整的或自定義的某個(gè)目錄文件系統(tǒng)樹形結(jié)構(gòu)圖# tree > tree.txt或者定義生成目錄深度# tree -L 2

 

責(zé)任編輯:武曉燕 來源: 硬土殼安全
相關(guān)推薦

2010-05-12 16:02:30

2011-03-28 16:59:16

nagios監(jiān)控服務(wù)器

2022-09-14 12:01:35

服務(wù)器入侵篡改,

2018-10-29 10:45:44

2010-05-20 18:19:45

2011-11-08 21:12:35

2010-05-12 17:45:01

IIS 服務(wù)器

2013-04-07 09:15:31

2019-08-01 15:05:22

2019-07-09 09:31:50

操作系統(tǒng)電腦技術(shù)

2017-12-21 07:54:07

2020-07-14 09:23:49

安全運(yùn)營甲方乙方

2010-05-12 17:46:38

IIS服務(wù)器

2018-01-15 09:32:59

即時(shí)通信服務(wù)器架構(gòu)

2013-01-18 10:54:33

2009-12-07 10:25:52

服務(wù)器安全服務(wù)器事件查看器

2009-08-03 18:16:46

ASP.NET Web

2018-01-31 11:20:48

2013-12-24 13:59:03

2010-05-19 18:39:28

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)