+22

Ký sự đi tìm kẻ giấu mặt public source công ty

Ngày....

9h45

Team có urgent notice, sếp lớn bảo ai có chứa mã nguồn dự án mà không còn sử dụng hay đại khái tương tự thì xóa đi, tuyệt đối không được copy vào máy cá nhân. Mình nghĩ: "Chắc sắp layoff nên sếp dặn thế, chứ source nặng như cái game AAA này ai mặn mà gì mà copy" Và cứ thế, mình quên bẵng đi chuyện đó....

16h30

Tin nhắn Team ting lên, "Toang rồi!" vỏn vẹn 2 chữ và bên kia vẫn đang typing rất khẩn thiết

Mình thầm nghĩ, "Toang gì thế nhỉ? Tầm này sắp layoff chưa đủ toang à? Còn gì kinh khủng hơn nữa sao?"

Bên kia ting tiếp, "Bạn đọc cái ticket này đi, để thấy sự nghiêm trọng"

Click vào đường link, wow, cũng nghiêm trọng đấy, đại khái là ticket của production team gửi đến và cần câu trả lời asap, bởi vì họ nhận được một request ticket về nội dung là "đe dọa" sẽ public source code của dự án, cụ thể được phát triển bởi chính công ty (tay giấu mặt này ghi rõ tên công ty luôn). Và khách hàng rất khó chịu về điều này, họ muốn câu trả lời nhanh nhất có thể.

Tầm sắp hết hợp đồng với khách hàng mà cắn thêm quả này thì như cắn ớt, bởi vì sẽ sau đó sẽ không còn sau đó nữa, anh em rất tức giận, bởi vì người làm điều này chắc chắn là người đã nghỉ / bị layoff đợt vừa rồi. Chứ anh em còn ở lại, ngu gì mà gửi 1 cái message như quấn bom vào người như vậy chứ ?

Nhưng việc cũng ko phải của mình, việc này của tay to lo, nên mình cũng quên bẵng đi chuyện đó

Ngày...

10h15

Đang đứng ở cầu thang giải lao, xem Tiktok thì thằng em đồng nghiệp ra bảo "Tìm ra rồi, ghê thật, bọn layoff vừa rồi đó chứ đâu, bọn AAA, BBB....vv"

Mình thắc mắc "Ủa sao tìm ra hay vậy ? Team Security giỏi kinh bây, thông tin ở đâu ra vậy ?"

Cu em: "Anh ko coi trên ticket à, nó update rồi kìa"

Haiz, cơm áo gạo tiền còn chưa đủ, anh mày hơi đâu lo chuyện của tay to, nhưng mà vào xem thằng khí nào đã đá vào mõm anh em những ngày cuối năm vậy.

Và, trên ticket là 1 ảnh đại khái như dưới (ảnh minh họa, mình đã filter đi word mà team Security dùng để làm điều đó)

image.png

Đại khái, người ta search keyword liên quan tới dự án thôi, và tìm ra 3 kết quả.

Copycat, mình cũng bắt chước làm xem thì 3 repositories kia cũng không có gì đặc sắc, 1 cái về Auto test, 1 cái chứa linh tinh gì đó chưa hiểu, 1 cái chứa source nhưng mà bằng ngôn ngữ khác (và mình sure luôn project mình ko xài ngôn ngữ này)

Thú vị là, 2/3 cái kia của người Việt vì nick name là tên, còn 1 cái là nick name kiểu Game, hehehe, chắc cậu nào ăn đòn rồi đây, tầm này tay to sẽ tìm thông tin và bợ ngay 😃)

Ngày cứ thế, trôi qua...

Ngày...

18h00

Sếp lớn lại mention trên Channel All, về việc team Security của khách hàng đã scan ra repository chứa mã nguồn dự án, kèm ảnh là repository thứ 3 (ko phải 2 cái người Việt) - cái có nick name Game ấy. Sếp kèm 1 câu là "Ai có thông tin hay liên quan thì liên hệ gỡ ngay, blah blah" và 1 yêu cầu là Report Abuse.

Yêu cầu Report Abuse chứng tỏ bất lực rồi....

Trên ảnh sếp đưa là Github kia, mình thấy được cái này

image.png

Phía dưới thông tin Github kia là 1 cái Gmail, ok copy đó đã, xem làm được gì ko!

Và nội dung chính bài viết giờ mới bắt đầu ^^

Đầu tiên, mình sẽ scan sơ qua cái account Github này, xem nó chứa các project gì, tất nhiên cái project mà bị team Sec mark là có mã nguồn của dự án thì mình đã xem qua, tại thời điểm đó mình thấy nó không có gì liên quan mã nguồn cả nên bỏ đó.

Mục tiêu của mình, là từ những thông tin nhỏ nhoi này, tìm ra mối liên hệ của nó đến 1 người nào đó của công ty mình, hoặc chí ít là tìm được chút thông tin khác ngoài cái Gmail công khai trên Github kia! Vì biết đâu sếp đã gửi 1 email rồi nhưng vô vọng =))

Người dùng này, có 1 vài project nhỏ kiểu example, 1 first app viết bằng type script, một cái demo HTML CSS, một cái thuần CSS, một cái PHP...vv nói chung cũng cỡ chục cái example nhỏ và chả có gì đáng giá cả.

Kiên trì 1 chút thì mình thấy có 1 project về Firebase, ý tưởng chợt nảy ra trong đầu, người này xài Firebase chắc sẽ có thêm thông tin gì đó từ Firebase, và mình mò vào đó, xem file FirebaseConfig.json

image.png

Ý tưởng tồi tệ nhất có thể nghĩ ra đó là, làm sao từ đống này truy xuất ra được thông tin chủ quản của cái Firebase đó, và câu trả lời tất nhiên là... KHÔNG THỂ vì lý do risk (Team Firebase đã confirm như vậy)

Và tất nhiên, nó tệ bởi vì, lỡ đâu truy xuất được đi nữa mà ra cái email Gmail ở trên kia thì thôi, ngay từ đầu đã có rồi mà T_T, hướng đi này quá lệch !

Bây giờ, chỉ còn lại cái repository mà team Sec đánh giá là lộ mã nguồn kia, thử vào tìm hiểu xem

image.png

Nó chỉ chứa 1 folder này, và trong đó chia làm các folder con

image.png

Mấy cái này thì mã nguồn gì nhỉ? Vì Folder struct đã không giống project mình đang làm :-? Kệ, tiếp tục, mình chọn "Environment" để khám phá

image.png

Đây là một file yaml, chắc chứa config gì đây, mở ra xem

image.png

Toàn mấy thông tin gì đâu, nhưng mà với con mắt của kẻ ham chơi lười làm, mình pick ngay cái "data.token" hehehehe, đây là 1 cái Json Web Token (JWT), quý giá rồi đây!

Vậy, JWT là gì?

JWT là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên Client – Server , các thông tin trong chuỗi JWT được định dạng bằng JSON . Trong đó chuỗi Token phải có 3 phần là header , phần payload và phần signature được ngăn bằng dấu “.”

Cấu trúc JWT chứa cái gì?

Như ở trên đã nói JSON Web Token bao gồm 3 phần, được ngăn cách nhau bởi dấu chấm (.):

Header

Payload

Signature (chữ ký)

Header Phần header sẽ chứa kiểu dữ liệu , và thuật toán sử dụng để mã hóa ra chuỗi JWT { "typ": "JWT", "alg": "HS256" } “typ” (type) chỉ ra rằng đối tượng là một JWT “alg” (algorithm) xác định thuật toán mã hóa cho chuỗi là HS256

Payload Phần payload sẽ chứa các thông tin mình muốn đặt trong chuỗi Token như username , userId , author , …

Lấy thông tin mình cần thôi nào

Tới đây, hẳn các bạn cũng hình dung ra được rồi. Website mình đang xài sử dụng JWT để xác thực, và chắc chắn là JWT sẽ chứa các thông tin như account, role...etc mà mình cần, dựa vào cái này thì mình có thể tìm ra và chắc chắn là thông tin hữu ích hơn cái Gmail mà ai cũng có thể thấy trên kia. Decode JWT thôi nào

image.png

(Mình che hơi nhiều thông tin nhạy cảm, mong anh em thứ lỗi)

Đúng như mình nghĩ, ở đây chứa thông tin về tài khoản, cụ thể là những chỗ mình vòng đỏ như "email, name, ip address, unique_name" và may mắn là, nó là 1 work email, ko phải cái Gmail như Github kia nên có ích hơn rồi. Có thông tin work email, không khó để mình tìm ra Linkedin của bạn này, có IP Address không khó để mình tìm ra vị trí xuất phát của request này, và may mắn tất cả những thông tin đó đều dẫn dụ về đất nước Bắc Mỹ xa xôi

image.png

image.png

image.png

Skills của bạn declare như này, vậy đúng người rồi, và bingo phát cuối, mình truy thử cái Gmail kia thì ra đúng thông tin bạn này, có cả Tiktok luôn =))

Mình thu thập hết thông tin này và gửi cho sếp, như sếp mong muốn tìm ra chủ nhân để bảo gỡ repo, và để team Security của bên khách hàng chạy tiếp xem có ra gì không chứ scan 1 cái repository public và bắt gỡ 1 cái repo không liên quan (đến thời điểm hiện tại) thì hơi chuối. Cũng coi như lời chào tạm biệt vì ra Tết hoặc có thể trước Tết mình cũng bị layoff rồi, nhưng mà mình vui, vì ít nhất còn để lại chút gì đó hahaha image.png

image.png

Tới thời điểm hiện tại thì có vẻ như lời đe dọa public source cũng chỉ là đe dọa, may mắn là chưa có vấn đề gì, nhưng nếu thật sự bị public thì nếu là bạn, bạn sẽ làm gì để giấu dấu vết nào, hãy cùng chia sẻ !

Update 19/01/2024: Chủ nhân Github kia đã gỡ repository, khách hàng mạnh thật =))

Đúc kết

Và bài viết trên, có lẽ hơi lan man nhiều nhưng ngay tiêu đề mình có để là "Ký sự..." và mình kể lại những gì mình trải qua trong hành trình tìm kiếm thông tin này, và xin tóm tắt lại là:

  • Không thể truy ra thông tin từ FirebaseConfig.json (thông tin owner project, email...vv) nhưng mà làm được nhiều thứ nhé, nếu lộ nó ra thì nội tại Firebase Project đó hơi cháy đấy ^^
  • Social Engineering rất quan trọng, ngay cả khi bạn không tìm được thông tin gì hữu ích thì biết đâu social engineering sẽ giúp các bạn
  • Trong bài mình đều dùng các trick / kiến thức cơ bản: JWT , IP lookup, Search Engine Query để thu thập thông tin, rất dễ tiếp cận, điều này chứng tỏ rằng bất cứ ai cũng rất dễ lộ mình trên Internet, nếu ko cẩn thận từ đầu.
  • Bất kỳ 1 chi tiết nhỏ nào cũng sẽ hữu ích, nếu thật sự nó hữu ích, và nếu bạn thật sự biết khai thác (cụ thể trong bài là file yaml vô tri kia)
  • Mình cũng chưa có dịp đào sâu để tìm hiểu về kỹ thuật scan source leaked, nhưng mà trước làm ở cty F*** thấy có mấy vụ, mình nghe đồn là mua lic hay ntn đó thì được warning / scan vào private repo, cái này anh em nào hiểu biết sâu có thể chia sẻ. Còn case của mình thì hiện tại mình nghi ngờ team SEC kia cũng chỉ phán bừa dựa vào project public chứ mình chưa nhận được thông tin từ sếp confirm là họ có tech gì đó để tracking sâu hơn. Chứ cụ thể repository này chỉ lưu template của 1 tool HTTP Request cụ thể là Insomnia chứ không có mã nguồn gì.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí