漏洞利用与提权(一):提权基础

1. 提权概述

1.1 概述

提权顾名思义就是提高自己在系统中的权利。渗透测试以获取系统的最高权限为目标,首先通过寻找漏洞,获取WebShell权限,然后进行提权。
提权可分为:

  • 操作系统提权
    • Windows
    • Linux
    • Samba
    • Android
  • 应用程序提权
    • Seru-u
    • Radmin
    • SQL Server 2000/2005、MySQL、Oracle
    • Java
    • IE

例如Windows下的提权漏洞 MS08-067, MS-10-084等。MS08指的是08年发现的漏洞,067是漏洞编号。

1.2 提权条件

提权不是在任何条件下都可以进行,他需要一定的条件,例如拥有内网普通用户权限、拥有WebShell权限、拥有FTP权限、拥有某些远程管理软件的账号和密码等,同时在服务器上存在相应的漏洞。还需要有利于该漏洞的工具或者代码程序等。

1.3 准备工作

a. 收集目标服务器的信息
利用已有的条件和权限,对需要提权的目标进行提权,例如在有WebShell的情况下获取Windows系统的信息。

systeminfo
ipconfig/all
net user
whoami
netstat-an

b. 收集提权服务器的漏洞补丁情况
c. 准备提权0day和其他相关工具

d. 寻找服务器可写目录
在目标服务器中找到一个可写目录。

1.4 实施提权

a. 上传或者下载0day和相关工具
文件上传到服务器的方式列举:

  • Linux下使用wget
  • 使用vbs下载
  • bitsadmin命令下载文件
  • FTP模式下下载

b. 执行0day进行提权尝试

c. 获取系统权限及操作系统的密码
使用密码获取软件获取操作系统的密码。例如使用 wce -w命令获取windows系统当前登录的明文密码,使用cat /etc/shadow命令获取Linux系统shadow文件内容。

2. Windows账号和密码的获取和破解

常见的密码获取软件有GetHashes, gsecdump, PwDump, SAMInside。常用的密码破解软件有LC5/LC6, SQMInsie, Ophcrack, Hashcats等。

2.1 使用GetHashes获取Windows系统密码的hash值

使用GetHashes获取系统密码时必须拥有System权限,也就是说要在反弹Shell或者Telnet下获取。系统中的杀毒软件或者防火墙可能导致获取密码失败。

3. 使用John the Ripper破解Linux密码

3.1 准备工作

Linux下与密码破解的两个文件

  • /etc/shadow
  • /etc/passwd
mark@kali:~$ john --help
Created directory: /home/mark/.john
John the Ripper 1.9.0-jumbo-1 OMP [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--single[=SECTION[,..]]    "single crack" mode, using default or named rules
--single=:rule[,..]        same, using "immediate" rule(s)
--wordlist[=FILE] --stdin  wordlist mode, read words from FILE or stdin
                  --pipe   like --stdin, but bulk reads, and allows rules
--loopback[=FILE]          like --wordlist, but extract words from a .pot file
--dupe-suppression         suppress all dupes in wordlist (and force preload)
--prince[=FILE]            PRINCE mode, read words from FILE
--encoding=NAME            input encoding (eg. UTF-8, ISO-8859-1). See also
                           doc/ENCODINGS and --list=hidden-options.
--rules[=SECTION[,..]]     enable word mangling rules (for wordlist or PRINCE
                           modes), using default or named rules
--rules=:rule[;..]]        same, using "immediate" rule(s)
--rules-stack=SECTION[,..] stacked rules, applied after regular rules or to
                           modes that otherwise don't support rules
--rules-stack=:rule[;..]   same, using "immediate" rule(s)
--incremental[=MODE]       "incremental" mode [using section MODE]
--mask[=MASK]              mask mode using MASK (or default from john.conf)
--markov[=OPTIONS]         "Markov" mode (see doc/MARKOV)
--external=MODE            external mode or word filter
--subsets[=CHARSET]        "subsets" mode (see doc/SUBSETS)
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             give a new session the NAME
--status[=NAME]            print status of a session [called NAME]
--make-charset=FILE        make a charset file. It will be overwritten
--show[=left]              show cracked passwords [if =left, then uncracked]
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only
--groups=[-]GID[,..]       load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only
--salts=[-]COUNT[:MAX]     load salts with[out] COUNT [to MAX] hashes
--costs=[-]C[:M][,...]     load salts with[out] cost value Cn [to Mn]. For
                           tunable cost parameters, see doc/OPTIONS
--save-memory=LEVEL        enable memory saving, at LEVEL 1..3
--node=MIN[-MAX]/TOTAL     this node's number range out of TOTAL count
--fork=N                   fork N processes
--pot=NAME                 pot file to use
--list=WHAT                list capabilities, see --list=help or doc/OPTIONS
--format=NAME              force hash of type NAME. The supported formats can be seen with --list=formats and --list=subformats

root@kali# john shadow.txt 
mark@kali:~$ john --show shadow.txt 
0 password hashes cracked, 2 left

5. PHP WeBaCoo 后门

6. 对提权工具PR的免杀(Anti Anti- Virus)

参考免杀技术。免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

免杀分类
  • 开源免杀:指的是拥有病毒、木马源代码的前提下,通过修改源代码进行免杀。
  • 手工免杀:指的是仅有病毒、木马的可执行文件(PE文件)的情况下进行免杀。
  • 自动免杀:指的是病毒、木马自身能自动变异,如:千面人病毒

对工具软件的免杀有两种方式:

  • 手工免杀
  • 通过工具软件直接加壳
内存、文件特征码的定位与修改

众所周知大部分杀毒软件查杀病毒的根据就是对比特征码,而这个过程一般发生在内存与硬盘中。对比硬盘中储存着的文件的特征码,能全面地查杀计算机中的可疑文件;对比在内存中储存着的文件的特征码,能快速地查杀正在运行的程序是否带有病毒,另外病毒文件一旦进入内存即运行中,很可能会现出原形被杀毒软件查杀。针对杀毒软件这一特性,骇客们发明了内存、文件特征码修改免杀法。通常首先用特征码定位软件定位文件特征码的所在之处,再用UltraEdit对被定位的特征码段进行修改。

一般修改方法有:
  • 十六进制的特征码直接修改法,就是把十六进制的特征码加1;
  • 字符串大小写修改法,就是特征码所对应的内容是字符串的时候,把大小字互换;
  • 等价替换法,就是当特征码所对应的是汇编指令时,把指令替换成功能类拟的指令;
  • 指令顺序调换法,把特征码对应的汇编指令的顺序互换;
  • 通用跳转法,用跳转的方法把特征码对应的汇编指令跳转走,犹如加花一样。
  • 修改特征码的方法针对性很强很有用,但一次修改只能对一款杀毒软件免杀;要令另一款软件免杀,就要重新针对该软件修改特征码,因为各家杀毒软件公司使用的特征码基本上都不相同。
常用工具有:

加壳器:PEditor、MaskPE、UPX等
脱壳与分析器:PEid、ResScope、RL!dePacker、Restorator等
加花器:FakeNinja
特征码定位与修改器:CCL、OllyDbg、UltraEdit
调试器:SoftIce
反汇编器:IDA、W32Dasm等
十六进制编辑器:HIEW、UltraEdit等
开发包:SDK与DDK
编译器:Microsoft Visual C++、Borland C++、Watcom C、GNU C以及Free Pascal等

6.1 什么是PR

PR是指提权Windows跟踪注册表项的ACL权限提升漏洞。

6.2 如何对提权工具进行免杀

6.3 加壳软件 VMProtect Ultimate

VMProtect 是新一代的软件保护系统,

7. LCX 端口转发实现内网穿透

8. 使用SockCap进行内网突破

端口映射功能将一个“假”IP映射成一个“真”IP,当用户访问主机的某个端口时,服务器将请求转到局域网中的某台提供特定服务的主机上。
端口映射分为

  • 静态端口映射
  • 动态端口映射

9. Windows系统提权基础命令

操作系统的版本和名称:systeminfo | findstr /B /C:”OS 名称” /C:”OS 版本”

主机名称:hostname

查看环境变量:set

查看用户信息

查看所有用户 net user
查看管理员用户组 net localgroup administrators

查看在线用户 query user

查看远程端口

显示每个进程中的服务并查找某一个进程的PID号 tasklist | find “xxx”
根据PID号查找端口 netstat -ano | find “4304”

查看网络情况

网络配置情况 ipconfig /all
路由器信息 route print

查看ARP缓存 arp -a

查看网络连接 netstat -ano

查看防火墙规则 netsh firewall show config

查看防火墙状态 netsh firewall show state

netsh 废弃,防火墙相关指令更改为 netsh advfirewall show

查看程序和服务

查看服务PID tasklist /SVC
查看已经启动的Windows服务 net start

查看某个服务的启动权限 sc qc TermService

查看已经安装程序的列表 wmic product list brief

/IM   imagename        Specifies the image name of the process to be terminated. Wildcard '*' can be used to specify all tasks or image names.
/F                     Specifies to forcefully terminate the process(es).
进程结束 taskkill /im 360.exe /f
线程结束 pskill

敏感文件检测

dir /b /s *.exe
共享资源

查看net share
手工添加共享 net share apdEX=C:/EX

手工删除共享 net share apdEX /del

一些基础的用户管理命令

添加用户 net user apd 123456 /add

增加用户为管理员 net localgroup administrators apd /add

查看当前系统管理员用户 net localgroup administrators

查看指定用户信息 net user temp

激活guest用户 net user guest /active:yes

修改guest用户密码 net user gu

漏洞利用与提权(一):提权基础_第1张图片

你可能感兴趣的:(Cyber,Security)