[Talk] Tôi đã tạch OSCP như thế nào?


Đây có lẽ là trải nghiệm thi cử mà tôi sẽ rất nhớ trong cuộc đời mình… vì nó đắt vl, cả về giá, và cả về những gì tôi đã học được.


Tròn 2 tháng kể từ khi tôi nhận được chiếc bằng “cứng”, khá lâu, vì tính tới thời điểm đó, tôi đã hoàn thành bài thi của mình được khoảng 7 tuần và cũng nhận được email thông báo đã đạt chứng chỉ sau đúng 2 ngày.
Đó là lần thi thứ hai của tôi, sau trải nghiệm lần đầu với kết quả khá tệ.

Về OSCP, Offsec và “Try harder!”

https://www.offensive-security.com/offsec/what-it-means-to-try-harder/

Bạn có thể nhìn vào logo của Offsec, nó lạ và dị dị, lần đầu tôi thấy thì cảm giác cũng y vậy.
Nó vẽ một người đàn ông và cái bóng của anh ta trải dài ở phía dưới.
Tôi từng đọc ở đâu đó, về hình ảnh này, lấy ẩn dụ đằng sau cánh cửa là những kiến thức, và cái bóng của anh ta thì lớn hơn con người anh ta khi đứng trước ngưỡng cửa.
Trước đó thì tôi chưa bao giờ nghĩ mình sẽ thi OSCP, dễ hiểu vì tôi có đếch kiến thức đâu mà thi, và cũng chả có tiền. Thế rồi…

Ôn luyện các kiểu

Tôi đăng ký OSCP trước Tết Nguyên Đán 2021, vì không muốn ăn Tết năm đó theo cách bình thường. Nhưng rồi thì tôi vẫn ăn Tết bình thường và bỏ phí mất 1 tuần không đụng gì vào lab.

Đem in 800 trang tài liệu mà Offsec cung cấp cho khoá học, đọc được 5 chương đầu, chủ yếu là về các công cụ và kỹ thuật khai thác tràn bộ đệm… Cuối cùng thì tôi quyết định làm bài Alpha trong OSCP Lab, khi kỳ nghỉ Tết còn 2 ngày và cái đầu thì đầy bánh chưng.

Bài Alpha này như một bài mở đầu, có bài viết rất rất chi tiết trên diễn đàn Offsec (tài khoản để vào được diễn đàn này có giá tương đương với giá khoá học, đùa đấy, chỉ những sinh viên của Offsec mới có tài khoản này). Tôi đã đọc rất kỹ bài viết, lạy hồn, nó hay, chi tiết, và viết nhiều cách. Dẫn dắt tư duy từ những bước tìm kiếm thông tin, nêu ra các hướng tấn công có thể và loại trừ các khả năng, tránh bẫy (rabbit hole), thu hẹp phạm vi đánh giá, tìm điểm yếu và khai thác điểm yếu… đó là những gì mà bài viết mang lại, nhìn chung, đó cũng là những gì mà khoá học OSCP mạng lại.

Kể từ ngày hôm đó, tôi chuyển hẳn sang làm lab và không còn động đến tài liệu nữa =)) lười vl. Sau khoảng 30 ngày, tôi hoàn thành 30 máy trong đó, có những máy rất dễ, chỉ cần tìm đúng exploit và chạy là xong. Nhưng có những máy cực khó, thú nhận là lắm khi tôi đã phải mò vào forum để tìm kiếm câu trả lời, điều đó là không nên, hãy hạn chế. Có những máy cần thông tin từ những máy khác (nếu chả may bạn đang tắc tịt ở một máy nào đó trong dải mạng Public thì có thể lắm là bạn đã húc phải những máy này, đây là điều tôi ghét ở OSCP Lab vì nó làm tốn thời gian của tôi).

Trong lab có 3 dải mạng, bạn có thể tấn công trực tiếp vào các máy trong dải mạng Public, hoàn thành được khoảng 80% trên tổng số các máy này, bạn sẽ có đủ tự tin để tham gia thi. Nếu vẫn còn thời gian, hãy thử chiến thêm các máy trong dải mạng Dev và Admin, để vào được hai dải mạng này, bạn sẽ phải “root” được 2 máy trong dải Public và dùng nó để làm bàn đạp tấn công vào sâu hơn (pivot). Hệ thống OSCP Lab được thiết kế mô phỏng một mạng doanh nghiệp.

Tổng kết OSCP Lab, tôi hoàn thành 41/6x máy. Hừng hực rồi đấy, đăng ký lịch thi!

Lần thi đần tiên. 2/5 máy. Tạch!

Tôi chuẩn bị khá kỹ, setup 2 màn hình các kiểu, ghi chép lại những mánh hay ho học hỏi được từ khắp các thể loại tài liệu, bài viết, xỉa răng, xúc miệng… nói chung là kỹ càng.

Đến giờ thi, trao đổi qua một chút với giám thị, tôi chẳng thạo tiếng Anh, có mấy câu cơ bản thôi, xin đi tè, xin đi ăn, xin đi ị, xin đi ngủ… thế là đủ, còn lại chả nói gì với nhau nhiều vì còn xoắn đít lên mà làm bài.

Bị mất rất nhiều thời gian với bài khai thác lỗi tràn bộ đệm, bài này 25 điểm. Tôi đã bỏ qua đoạn code mà đề bài cho sẵn mà lại tự đi mò cổng dịch vụ dính lỗi, ngu xuẩn, cái giá phải trả là tôi tốn mất hơn 3 tiếng cho bài BOF đó. Cảm giác run bần bật ở đầu ngón tay đỡ hơn, đi uống ụm nước và bắt đầu đọc thông tin autorecon từ 4 máy còn lại.

Một mớ bòng bong đúng nghĩa. Rất nhiều bẫy và hoàn toàn lạ lẫm, đó là cảm giác của tôi, nó khác khá xa so với những máy trong lab. Hoặc là tôi vẫn chưa đủ trình độ với bài thi này.

Trong suốt thời gian còn lại, tôi làm thêm được bài 10 điểm, những máy sau thì chịu, lý do rất đơn giản, tôi không thể. Tôi đã mất nhiều thời gian nhất vào bài 25 điểm, đã gần chạm tới chiếm quyền điều khiển, nhưng vẫn có gì đó không hề rõ ràng và có thể phải mất cả ngày trời để tìm hiểu về điều đó.

Vậy là tạch.
Sau đó là khoảng thời gian không vui vẻ gì, kiểu, suy sụp.

Chạy đà lần hai

Nguyên một tuần sau khi tạch, tôi không đụng vào lab dù vẫn còn thời gian truy cập, cũng như không làm gì cả. Sau đó là chạy dự án công ty, liền cả tháng trời, vẫn thi thoảng mò vào Vulnhub hay HackTheBox, không nhiều.

Cho đến một ngày tôi đọc được một bài viết trên Reddit, chủ thread này y chang tôi, cũng choáng ngợp với những máy trong OSCP Exam mặc dù anh ấy đã hầu như hoàn thành hết các máy trong OSCP Lab. Rất nhiều bình luận bên dưới tương tự, và họ đều nói rằng kỳ thi lần hai ổn hơn, và ôn luyện với Proving Grounds.

Thế là tôi bắt đầu với Proving Grounds, $19 một tháng. Trải nghiệm trên PG giống hệt như thi, các máy được xếp độ khó theo thang điểm như trong OSCP Exam.

Tôi làm hết những bài 10 điểm, đúng, nó dễ, chỉ cần tìm được đúng exploit là xong, nhưng nhiều bẫy. Nắm được điều này như kiểu bắt bài, tôi hoàn thành chỗ bài 10 điểm chỉ trong 3 ngày. Với những bài 20 điểm và 25 điểm, lắt léo hơn, nhưng tóm lại kỹ thuật không mới, liệt kê (enumerate) và tìm kiếm thêm thông tin (research), tìm kiếm exploit không chỉ dùng ExploitDB mà còn kết hợp với Github… Sau gần một tháng tu luyện lại, tôi rõ hơn về cách làm những bài 10 điểm, 20 điểm và 25 điểm, không còn mù mờ như lần đầu thi. Cảm giác khá là thoáng. Rảnh rảnh thì ngồi xem video của Ippsec, phải nói là gã này lắm mánh hay.

Được rồi, đóng họ $150 và thi lại!

Thi lần hai. 4,5/5 máy. Hê!

Mặc dù vẫn gặp chút ngớ ngẩn với bài BOF những tôi vẫn hoàn thành nó trong thời gian mình tự định ra, và hoàn thành tiếp bài 10 điểm ngay sau đó. Lúc này tôi còn khoảng gần 22 giờ cho 3 bài còn lại.

4 tiếng sau, tôi hoàn thành bài 20 điểm, cũng khá căng đấy, hơi run, nhưng không sao, chiến tiếp bài 25 điểm để tối ngủ cho ngon.

Ăn cơm tắm rửa cho người ngợm đỡ hôi. Phải mất đến 6 tiếng để tôi hoàn thành được bài 25 điểm.
Vậy là được 80 điểm, thế là pass rồi, cảm giác lúc đó đỉnh lắm, không thể gào thét thì giờ là 1h sáng, cũng vừa hết bóng đá giữa Việt Nam và đội quái nào chẳng nhớ, tôi ra ban công hóng gió và nhắn tin khoe các kiểu =))

Quay lại bàn, chụp ảnh POC và note lại kỹ càng, ăn chắc mặc bền với 80 điểm, tôi đi ngủ.

Đến sáng, lúc này còn khoảng 5 tiếng nữa là hết giờ. Tranh thủ đớp cái bánh và ngồi xem có gặm được bài 20 điểm còn lại không. Ăn may là có. Cuỗm thêm được nửa điểm của bài đó vì chiếm được quyền điều khiển, nhưng không thể leo thang lên quyền system được, thôi bỏ, còn đôi chục phút, chào lễ phép giám thị và ngắt kết nối VPN.

Đánh thêm một giấc nữa tới chiều và đi đạp xe, về viết báo cáo và nộp.
(Đừng đùa, khoản viết báo cáo cũng tốn thời gian đấy, đừng nghĩ 24h là đủ với tâm hồn hay delay)

Chứng chỉ, và những gì nhận được

Nộp report khoảng 2 ngày, tôi nhận được mail báo đạt chứng chỉ vào hôm Chủ Nhật.
Đấy là thông báo mà tôi đã mong chờ nửa năm nay. Yah!

Những gì học được từ OSCP là một bước đệm, bước đệm thực sự quan trọng. Trước đó tôi là một con gà mờ đúng nghĩa khi chỉ biết dùng tool chạy chạy mà chẳng hiểu gì, sau này thì vẫn là gà, nhưng đỡ mờ hơn một chút, biết mình phải làm gì và sử dụng công cụ như thế nào.

OSCP hướng tới sự tư duy vể nhìn nhận đa chiều, phản biện, liệt kê và tìm kiếm, đây là những bước đầu quan trọng nếu muốn bắt đầu với Pentester.

Chia sẻ chút

Mấy tip nhỏ nếu bạn đã và đang chuẩn bị thi OSCP.

  • Hãy dùng Windows là máy host, chạy Kali trên máy ảo thôi. Chẳng phải ngẫu nhiên mà điều này nằm trong cả hướng dẫn của Offsec đâu, vì Linux có vấn đề khi chạy chương trình giám sát của giám thị do xung đột về quyền.
  • Nếu bạn dùng quen 2 màn hình, ok, tuỳ, lần thi đầu tôi cũng dùng 2 màn hình, nó khiến tôi bị… mất tập trung (mặc dù khi làm việc tôi vẫn dùng 2 màn hình). 1 màn hình là đủ, và bạn cũng có lợi hơn về băng thông mạng khi đỡ phải chia sẻ thêm một màn hình phân giải Full HD.
  • Chuẩn bị môi trường Kali thật tốt, tạo backup, snap shot, đừng để đến lúc thi nó lại lăn ra đấy thì…
  • Hãy đảm bảo mạng mẽo ổn định, và cả nguồn điện nữa. Nếu mất điện, bạn có thể báo lại với giám thị để họ cộng bù giờ, nhưng rất ảnh hưởng tâm lý.
  • Ăn và ngủ, đừng quá sức :D
  • Nếu có tạch, bạn có thể thi lại, có sao đâu.

Vài nguồn hay bạn có thể xem, vì tôi đã xem rất nhiều :v