Mình đã pass OSCP như thế nào

Hi, đển hẹn lại lên, cứ cuối tháng là mình lại làm một cái blog mới. Lần này chủ đề sẽ khác khác một xíu. Về cơ bản là đầu tháng 6 này, sau 1 năm cứ gọi là tạm ra trường, mình đi thi chứng chỉ đầu tiên về bảo mật trong đời mình, đó là OSCP, và may mắn không làm nhục mệnh, mình đã pass :'>. Nên là bài này sẽ viết về trải nghiệm thi OSCP vừa rồi của mình, và những điều rút ra từ đó. Mong những thông tin này có ích


20200630145002481.png

OSCP Examination

Đầu tiên vầy OSCP nó là cái gì? Offensive Security Certified Professional (OSCP) là một chương trình chứng chỉ mà tập trung vào những kỹ năng tấn công và kiểm thử bảo mật. Nó bao gồm 2 phần: một bài thi pentest trong vòng 23h45p và một report nộp trong vòng 24h ngay sau đó. OSCP là một bài thi rất là thực tiễn.

Vầy tại sao lại nên thi OSCP? Mình có 2 lý do chính:
- Để học hỏi và nâng cao kiến thức lẫn kỹ năng về kiểm thử bảo mật. Như đề cập ở bài trước, mình mới chuyển qua pentest gần đây thôi, nên cần một cái gì đó định hướng rõ ràng hơn về mảng này. Và khi đăng ký thi thì sẽ được trải nghiệm thực hành hơn 54 bài labs rất thực tế và có bộ tài liệu hướng dẫn rất rõ ràng và cụ thể.
- Để tăng lương (đương nhiên rồi). Đợt trước có bài nào đó của bên Cyradar bảo rằng chứng chỉ OSCP giúp tăng 200% lương 🤑🤑 OSCP hiện nay là một chứng chỉ đang lên, vì lý tính thực tiễn lẫn độ khó của nó. Nó được xếp trong TOP 5 chứng chỉ pentest đáng mơ ước và cần có cho pentester. Nó sẽ giúp tăng cao giá trị của bản thân lên rất nhiều, vì bên cạnh CEH, đây là một chứng chỉ yêu cầu cho nhiều bên thầu.

Kỹ năng bạn sẽ có được qua course của OSCP:
- Passive Information Gathering
- Active Information Gathering
- Vulnerability Scanning
- Buffer Overflows
- Working with Exploits
- File Transfers
- Privilege Escalation
- Client-Side Attack
- Web Application Attacks
- Password Attacks
- Port Redirection and Tunneling
- The Metasploit Framework
- Bypassing Antivirus

Hành trình OSCP của mình

Bắt đầu vào phần chính của bài này nào. Mình sẽ đi qua những gì mình đã trải qua trong courrse của OSCP và những gì mình rút ra được (kinh nghiệm lẫn lời khuyên).

Bởi vì công ty yêu cầu một nhân viên nào đó có chứng chỉ OSCP, và nếu có thì sẽ được tăng lương =))) và mình cảm thấy mình khá có duyên với các thể loại thi cử nên mình nhận thôi :v

Và hành trình sẽ được chia là 3 giai đoạn chính:

Giai đoạn chuẩn bị:

Có một số thứ bạn cần chuẩn bị trước khi đăng ký thi.

Đầu tiên thông tin về chứng chỉ, bạn phải biết mình đang thi cái gì và thể thức thi như thế nào đúng không? Nó sẽ nằm tại đây https://support.offensive-security.com/oscp-exam-guide/.

Thứ hai là những kiến thức và kỹ năng cần thiết. Bởi vì khi bạn đăng ký thi, bạn sẽ phải mua một gói bao gồm lệ phí thi, Penetration Pentesting with Kali Course bao gồm một quyển PDF hơn 800 trang và hơn 8 tiếng videos hướng dẫn, và VPN để bạn kết nối tới môi trường lab (cái giá trị nhất trong toàn gói). Lab bạn có thể mua theo các mức 30 ngày, 60 ngày hoặc 90 ngày tùy dự định của bạn. Mình thì chọn 60 ngày. Bởi vì thời gian là tiền bạc, trước khi bạn mua gói này, bạn cần phải cuẩn bị những kiến thức lẫn tinh thần phù hợp, nếu không thì bạn sẽ bị ngợp (giống mình) về kiến thức lẫn kỹ năng, và trong 60 ngày đấy đảm bảo bạn sẽ không đủ thời gian để thực hành đủ để thi. Bởi vì trên trường mình cũng có được dạy và thực hành những cái này rồi, nên là mình cũng khá là quen nên mình không bỡ ngỡ lắm.

Vầy những gì bạn cần chuẩn bị về mặt kiến thức là gì:
- Môi trường Linux và Windows. Đây là cái mình coi là quan trọng nhất. Bạn cần phải có kiến thức lẫn quen thuộc khi làm việc với cả hai môi trường Windows và Linux, đặc biệt là Command Line Interface trên Linux bởi vì đó là nơi bạn làm việc nhiều nhất, đặc biệt là Kali. Nếu bạn còn mới lạ, quyển sách này có thể có ích Kali Linux Revealed.
- Kỹ năng lập trình cơ bản. Cái này bao gồm việc đọc, hiểu và có thể modify code Python, Bash, Perl,... Bạn sẽ không cần phải viết một exploit hoàn chỉnh, những bạn cần ít nhất hiểu được cách thức hoạt động của nó. Có hàng triệu website ngoài kia có thể giúp bạn làm quen với Python. Mình trước đây là nhảy bụp vào luôn nên cũng không có một phương thức nào đó có ích cho lắm :v
- Web Application Attacks (SQLi, Local File Inclusion, Remote File Inclusion, Command Injection,...) trong labs bạn sẽ phải khai thác chủ yếu của Web Applications, nên bạn cần có những hiểu biết nhất định về các thể loại tấn công này. Web Application Hackers Handbook quyển này rất có ích đối với bạn nào mới chập chững làm quen với vấn đề này.
- Những Tools chạy trên Kali/Linux: Cái cuối cùng là bạn cần phải làm quen hoặc ít nhất là biết cách hoạt động của những tools - thứ mà bạn cần phải dựa vào nó để có thể hoàn thành bài thi. Một số tools bạn cần phải biết như là: Metasploit, Nmap, Netcat.
- Làm quen với môi trường Labs: Để đỡ bỡ ngỡ khi tần công một máy tính. Bạn có thể làm quen với những dạng lab tương tự như OSCP ở trên Hack The Box, hoặc tham khảo tại link đây OSCP Like vulnerable machines list by abatchy.

Giai đoạn trước khi lên thớt:

Khi bạn đủ tự tin và chuẩn bị đủ tinh thần, bạn có thể đăng ký bắt đầu trên trang chủ của Offensive Security. Sau khi bạn đăng ký thời hạn lab, đến ngày bạn đăng ký, bạn sẽ nhận được email bao gồm tài liệu về khóa học lẫn hướng dẫn kết nối tới môi trường labs thực hành.

Không biết các bạn như thế nào, nhưng mình luôn luôn có thói quen là có những kiến thức căn bản trước, biết mình phải làm gì mới bắt tay vào làm. Nên là mình chia giai đoạn này làm 2 phần, lý thuyết và thực hành.

Lý thuyết:

Mình dành ra gần 1 tháng đầu tiên chỉ để đọc và nghiên cứu tài liệu được cung cấp. Nó bao gồm một cuốn sách PDF hơn 800 trang và một bộ videos trực quan đi kèm. Trong cuốn sách cũng có những Exercise ở cuối mỗi mục, nếu bạn làm hết và nộp lại reports thì bạn sẽ được thêm 5 điểm chuyên cần vào kết quả của bài thi cuối cùng. Cảm nhận của mình về tài liệu thì nó rất là đầy đủ, nó thiết kế để cho một người mới hoàn toàn có thể có được những kiến thức căn bản nhất, và nó cũng rất rộng và toàn diện về tất cả các mảng. Nếu mà không có giai đoạn chuẩn bị trước đấy, thì thật sự bạn sẽ bị ngợp bởi lượng thông tin mà nó mang lại.

Lời khuyên và kinh nghiệm rút ra của mình là bạn có thể không cần phải xem và biết toàn bộ, nhưng bạn nên đọc qua một lần. Bạn có thể skip những phần mà bạn cho là bạn biết rồi, và đọc những phần mà bạn cảm thấy mới mẻ. Bởi vì rằng, có những thông tin và công cụ mà trong tài liệu nó rất hay và hữu ích, nó sẽ trực tiếp giúp bạn làm dễ hơn các bài labs cũng như bài thi.

Thực hành:

Đây là phần giá trị nhất của toàn bộ gói, theo như phần lớn mọi người nhận xét. Bởi vì đây là thứ giúp bạn chuẩn bị cho bài thi của mình, cũng có thể coi như là đề mẫu đi.

Có tổng cộng 57 public servers để bạn tấn công, và thêm vào đó có 3 internals server mà bạn có thể pivot tới khi bạn có được keys từ một máy nào đó ở public. Trong vòng thời gian labs, mình dã root được đâu đó khoảng 52/57 máy.

Kinh nghiệm mình rút ra được đó là:
- Bạn nên bắt đầu với máy Alpha và Beta trước, với IP là .71 và .72. Bởi vì đó là những bài mẫu, trên students forum có mẫu reports sẫn rất rất là chi tiết về cách tiếp cận lẫn phương pháp luận để có thể tấn công và lên quyền vào một servers.
- Có 2 keywords bạn luôn luôn cần nhớ đó là "Enumerate more" và "Try Harder". Thực sự sau khi bạn hoàn thành cái này, bạn sẽ khắc cốt ghi tâm 2 cụm từ này, vì nó chính là từ khóa mỗi khi bạn stuck ở đâu đó. Đôi khi bạn chỉ cách đáp án 1 cái port bị ẩn hoặc là cái sub directories mà bạn chưa enum ra thôi. Về enumerations, mình có tìm được một tools khá hay và chi tiết, giúp mình trong một máy của bài thi cuối cùng: https://github.com/Tib3rius/AutoRecon.
- Luôn luôn note lại những gì bạn tìm thấy được và đạt được. Mình có một file excel để ghi lại những gì mình đã enum ra, cũng như exploit code mình dùng để khai thác và lên quyền. Bởi vì có một số máy nó yêu cầu việc bạn phải xâm nhập vào một máy khác để bạn có thể truy cập được vào nó. Việc này sẽ giúp bạn dễ dàng quay trở lại máy đấy hơn và biết được mối liên kết giữa từng máy để quay lại.
- Bạn có thể tham khảo students forum để có được những hướng dẫn nếu bạn stuck ở đâu đó quá lâu. Ở đấy có những post để trao đổi về từng máy, hoặc bạn cũng có thể inbox cho những người cùng thi với bạn để có thêm nhiều hướng tiếp cận hơn. Tuy nhiên bạn không nên lạm dụng nó, vì bạn sẽ không có nó khi thi.
- Luôn luôn revert lại một máy trước khi làm nó. Bởi vì không phải một mình bạn truy cập tới môi trường labs đấy. Bạn nên revert lại thứ người khác đã làm trên đấy trước đấy để đảm bảo môi trường clean nhất có thể.

Ngày lên thớt:

Trước ngày thi, bạn nên chuẩn bị rất kỹ càng, về cả thể chất lẫn tinh thần. Bởi vì đó là bài thi kéo dài 24 tiếng. Không giúp đỡ, không gợi ý, chỉ có mình bạn và người giám sát.

Chuẩn bị sức khỏe, kế hoạch đồ ăn và thức uống bạn cần để hoàn thành bài thi. Ngủ đủ giấc. Và trong suốt khoảng thời gian thi bạn được phép ra khỏi chỗ, đi lại, và nghỉ ngơi. Không nên quá stress khi bạn bị kẹt ở đâu đó, hãy dừng lại, tạm nghỉ, hoặc chuyển hướng sang máy khác. Tuyệt đối không nên để stress, hoảng loạn và lo lắng chiếm cứ tâm trí của bạn. Trong ngày thi, trong suốt 12 tiếng đầu tiên mình chưa hề có shell trên một con máy nào cả, tất cả đều thiếu một xíu xíu gì đó, và thề là bạn không biết mình chửi thề đề bài này nhiều thế nào đâu. Và sau 3/4 thời gian, sự việc nó tiến triển hơn một xíu khi mình làm xong được mỗi bài Buffer Overflow (bài tương tự như vẽ đồ thi hàm số trong thi đại học ý). Nhưng sau khi mình đi ra ngoài hít thở khoảng 20p như này, mình quay lại tự dưng mình thấy cái mà mình trước đấy chưa thấy, và mình tìm lại được cái guồng của mình. Kết quả là mình kết thúc bài thi với chỉ thiếu 1 máy chưa lên được root. Một kết quả mình biết là thừa sức đỗ rồi. Từ đó mới hiểu rõ được 2 câu thần chứ "Enumerate more" và "Try Harder".

Trong vòng 24h tiếp theo thì bạn phải hoàn thành và submit report, về quá trình enumeration cũng như cách thức bạn khai thác và lên quyền. Report yêu cầu phải có những screenshots và hướng dẫn cụ thể để reproduce, nên là bạn phải đảm bảo rằng chụp ảnh các bước trong quá trình làm bài, bởi vì khi bạn kết thúc bài thi, kết nối VPN sẽ ngắt, và không còn cơ hội để bạn kết nối với server để thực hiện lại đâu.

Và cuối cùng thì, sau khi nộp reports, kết quả sẽ có trong vòng 10 ngày làm việc. Và khi kết quả tới, yayyy, cuối cùng mình cũng có cơ hội được tăng lương =))))

Kết

Và trong cả quá trình học lẫn thi, luôn tìm sự thích thú. Luôn có một cái niềm vui gì đó không nhỏ thì cũng lớn khi mà bạn học được cái mới, những cái mà bài phải ồ lên, hoặc là khi bạn thành công root được một con máy khoai vchhh mà bạn tốn mấy ngày để làm nó :'> So have fun.