it-swarm-vi.com

Làm thế nào và tại sao trang web của tôi bị lạm dụng?

Tôi sở hữu một trang web phổ biến cho phép mọi người nhập số điện thoại và lấy lại thông tin về số điện thoại đó, chẳng hạn như tên của nhà mạng điện thoại. Đây là một dịch vụ miễn phí, nhưng chúng tôi phải trả tiền cho mỗi truy vấn để chúng tôi hiển thị quảng cáo trên trang web để giúp trả tiền cho nó. Để đảm bảo mọi người không lạm dụng nó, chúng tôi có một hình ảnh xác thực và sử dụng địa chỉ IP để giới hạn số lượng truy vấn là 30 mỗi tháng.

Nhưng dù sao chúng ta cũng đã thấy lạm dụng; chúng tôi sẽ đột nhiên nhận được một lượng lớn các truy vấn từ tất cả các địa chỉ IP khác nhau thực hiện các truy vấn (hàng trăm mỗi phút) và nhận được các captcha chính xác. Vì vậy, tôi tiếp tục thay đổi captcha - Tôi đã thử những từ có từ, phương trình toán học, reCAPTCHA, v.v. Khi tôi làm điều này, nó sẽ dừng "cuộc tấn công" trong 24 giờ hoặc lâu hơn, rồi nó lại bắt đầu.

Tôi hiểu mọi người có thể sử dụng OCR và các phương pháp khác để truy cập captcha, nhưng tôi không hiểu tại sao họ đến từ nhiều địa chỉ IP khác nhau và không liên quan.

Có lẽ họ đang giả mạo địa chỉ IP? Nếu vậy, họ không thể nhận được kết quả từ các truy vấn, đúng không? Trong trường hợp này, có lẽ mục tiêu là cố gắng làm tổn thương chúng ta về mặt tài chính, trái ngược với việc họ chỉ muốn dữ liệu?

Nếu họ không giả mạo địa chỉ IP, có lẽ họ đã hack một số lượng lớn các máy tính khác nhau và đang thực hiện các truy vấn từ chúng? Điều này không có ý nghĩa với tôi vì số lượng địa chỉ IP tuyệt vời mà chúng tôi đang thấy (hàng trăm giao dịch mỗi phút với tối đa 30 truy vấn trên mỗi địa chỉ IP, trong thời gian dài) và thực tế là dữ liệu này thực sự không có giá trị.

Vì vậy, tôi đang cố gắng để hiểu động lực của họ cũng như cách họ đang thực hiện điều này, để có thể chống lại một cách thích hợp.

84
Marc

Vấn đề thú vị. Tôi tự hỏi liệu một giải pháp cho vấn đề này có thể là buộc các trình duyệt web của người dùng của bạn giải quyết vấn đề về mật mã (sử dụng javascript chạy trong trình duyệt web của họ) rất khó giải quyết, nhưng 'dễ dàng' để trang web của bạn xác minh. "Khó" để giải quyết, ý tôi là một vấn đề sẽ mất ~ 10 giây để giải quyết với tài nguyên của một máy tính để bàn hoặc máy tính xách tay thông thường. Một vấn đề gần giống với vấn đề mà các công ty khai thác bitcoin giải quyết khi các khối mới được khai thác, nhưng tất nhiên ở quy mô đơn giản hơn nhiều.

Người dùng hợp pháp của bạn sẽ không nhận thấy sự khác biệt, vì tập lệnh sẽ biến mất trong khi họ điền vào biểu mẫu trên trang web của bạn. Tuy nhiên, nó sẽ làm chậm đáng kể những kẻ lạm dụng và buộc họ phải phân bổ nhiều tài nguyên hơn và buộc họ phải làm lại bất kỳ công cụ nào họ đang sử dụng để tự động hóa các bài đăng này vào trang web của bạn.

97
mti2935

Làm sao?

Cho thuê trang trại botnet và captcha.

Tại sao?

Ai đó muốn dữ liệu của bạn. Nó rẻ hơn để ăn cắp nó hơn là mua nó.

Phải làm sao

Ăn cắp nó là rẻ hơn, nhưng không miễn phí. Nó tiêu tốn "chúng" (bất cứ ai cuối cùng muốn có dữ liệu, không phải trang trại botnet hoặc captcha) để thực hiện các cuộc tấn công này. Làm cho nó đắt hơn để tấn công bạn hơn là dữ liệu có giá trị.

  1. Xác định các mẫu để xác định người gửi thư rác.

  2. Trả lại tìm kiếm hợp pháp, nhưng dữ liệu không có thật cho những kẻ gửi thư rác.

Sau một số phản hồi hợp lệ nhất định, hãy bắt đầu xen kẽ dữ liệu không có thật với dữ liệu hợp lệ. Sau đó, họ phải thực hiện các bước bổ sung để xác thực dữ liệu của bạn. Những bước thêm chi phí thêm tiền.

Nếu họ không xác thực nó, dữ liệu của họ sẽ ít hữu ích hơn, tức là có giá trị ít hơn. Họ vẫn có thể sử dụng hoặc bán nó, nhưng nó ít có giá trị hơn nên chi phí để tấn công bạn cao hơn giá trị trả lại.

34
Zach Mierzejewski

Bạn đang làm CAPTCHA sai.

Ý tưởng của CAPTCHA là làm cho nó khó khăn (đọc "bên cạnh không thể) để máy tính giải quyết nó, nhưng con người dễ làm như vậy. Nếu bạn chỉ sử dụng một hình ảnh tĩnh, hãy yêu cầu nhập 4 chẳng hạn, sau đó một máy tính sẽ không gặp sự cố khi liên tục nhập 4 khi được hướng dẫn làm như vậy.

Thay vào đó, hãy cân nhắc sử dụng reCAPTCHA hoặc các công nghệ tương tự. Những vấn đề này đã được giải quyết và không cần phải phát minh lại bánh xe, như đã trình bày dưới đây:

[Reinventing the Wheel]

CC-BY-NC 2.5, Randall Munroe, xkcd.com/2140/

22
MechMK1

Nếu bạn có thể đưa ra một CAPTCHA "nhập số trong ảnh" đơn giản và sử dụng thanh đó trong 24 giờ, bạn sẽ biết kẻ thù của mình là một kẻ nghiệp dư. Bạn biết loại thiết bị nguyên thủy này liên quan đến mã bespoke sẽ làm chậm chúng trong 24 giờ. Điều này có thể vui vẻ :)

Tôi sẽ sử dụng rộng rãi các bảng định kiểu để ẩn thông tin trong mã trang: theo hai nghĩa, lần đầu tiên ẩn CAPTCHA và lần thứ hai ẩn câu trả lời thông tin. Với một mục đích để tàn phế lừa dối.

Tôi sẽ viết một chút mã ở phía máy chủ để tạo ra các câu trả lời giả mạo có thể tin được ngay từ cái nhìn đầu tiên, nhưng qua điện thoại theo những cách không dễ dàng xác nhận. Hơn nữa, sử dụng seeding ngẫu nhiên hoặc MD5 để đảm bảo cùng một đầu vào luôn đưa ra cùng một câu trả lời điện thoại.

Gây hiểu lầm về CAPTCHA:

Ví dụ: để lại hệ thống CAPTCHA cuối cùng bạn đang sử dụng, nhưng sử dụng biểu định kiểu để ẩn hệ thống. Thực hiện theo CAPTCHA khác, bị ẩn bởi Javascript; thậm chí có thể là một reCaptcha khác với một khóa khác.

Bây giờ, người quét sẽ không nhận ra CAPTCHA đầu tiên bị loại bỏ bằng các bảng định kiểu. Nó sẽ vui vẻ giải CAPTCHA và trả lời sai với khóa sai. Gotcha . Tuy nhiên, giống như bẻ khóa Enigma, bạn không thể làm rõ rằng bạn đã đánh cắp mã; người quét phải tiếp tục tin rằng nó đang hoạt động.

Đánh lừa về câu trả lời:

Trình bày một câu trả lời như bình thường, với một bản định kiểu xung quanh nó. Bản định kiểu ẩn kết quả này cho người bình thường; người cạo không biết rằng tờ này có thuộc tính "ẩn". Câu trả lời bạn trình bày ở đây là giả mạo. Trình bày kết quả thực sự sau đó. Đối với điểm thưởng, hãy trình bày kết quả trong đồ họa làm cho nó không bị ảnh hưởng. Cố gắng che giấu điều này tất nhiên.

Nếu bạn có từ xa (đã giải quyết CAPTCHA sai) rằng đây là truy vấn bị loại bỏ, thì thậm chí không bận tâm đến việc mua kết quả truy vấn đó từ nhà cung cấp dịch vụ của bạn. Chèn một giấc ngủ (t + ngẫu nhiên) trong khoảng thời gian điển hình mà nhà cung cấp dịch vụ của bạn mất, sau đó gửi lại câu trả lời giả mạo.

Trông bình thường

Kẻ tấn công sẽ tin rằng mọi thứ đang hoạt động bình thường và chỉ kiểm tra thành công truy vấn chứ không phải chất lượng của kết quả. May mắn thay, kẻ tấn công của bạn sẽ không đăng nhập khi mỗi truy vấn được thực hiện và chỉ đơn giản là bỏ các câu trả lời vào cơ sở dữ liệu. Kẻ tấn công có thể mất khá nhiều thời gian để nhận ra bạn đã đầu độc dữ liệu, đến lúc đó, toàn bộ cơ sở dữ liệu sẽ bị hỏng, không biết mục nào là hợp lệ và là độc (xem tầm quan trọng của việc làm cho dữ liệu giả trông hợp pháp ?) Ngay cả khi kẻ tấn công đánh dấu thời gian cho mỗi mục, thật là một lỗi săn! Phải tự kiểm tra một vài mục cho mỗi ngày để tìm ra khi dữ liệu bị hỏng.

Và một điều nữa. Bộ nhớ cache câu trả lời đúng và nếu truy vấn botnet trong bộ đệm, luôn luôn đưa ra câu trả lời chính xác từ bộ đệm. Vì vậy, trình cào, rắc rối, sẽ tấn công trang web thực sự của bạn bằng trình duyệt và yêu cầu số kiểm tra 213-456-7890. Việc ẩn sẽ hoạt động và điều này sẽ hoạt động như một truy vấn thực sự, vì vậy bạn sẽ tính toán câu trả lời thực sự và trả lại nó. Tiếp theo, người quét sẽ nói với botnet để yêu cầu 213-456-7890. Để xem bot có được một kết quả khác không. Bạn sẽ phát hiện truy vấn bot . Nếu bây giờ bạn đưa ra một câu trả lời giả mạo, người quét sẽ biết jig đang hoạt động và sẽ lặp đi lặp lại khi phá vỡ sự phát hiện của bạn. Vì vậy, vì bạn có câu trả lời đúng trong bộ đệm, hãy đưa ra, ngay cả trong các trường ẩn. Bây giờ, bộ cạp bị bối rối: botnet dường như hoạt động .


Lý do tại sao và làm thế nào

Rõ ràng ai đó tìm thấy dữ liệu của bạn có giá trị. Họ sẽ lấy nó từ nguồn của bạn, nhưng họ không muốn trả tiền cho nó, vì vậy họ đang cào bạn.

  • Có thể họ thực sự là một trang web của đối thủ cạnh tranh giống như bạn làm và họ tạo một truy vấn cho bạn khi họ nhận được một từ khách truy cập của họ. Về bản chất đây là một kế hoạch sử dụng dịch vụ của bạn nhưng đưa lên quảng cáo của họ. Chính bạn biết giá trị của điều đó. Bạn có thể kiểm tra điều đó bằng cách thực hiện các truy vấn tối nghĩa và khác nhau trên mỗi trang web của đối thủ cạnh tranh và xem những truy vấn nào xuất hiện trong nhật ký của bạn.

Có hàng trăm cách để giải quyết CAPTCHA. Trong ví dụ về trang web của đối thủ cạnh tranh lấy dữ liệu của bạn cho khách hàng của họ, họ có thể chỉ cần truyền CAPTCHA của bạn cho khách hàng của họ. Cũng có nhiều cách để lừa mọi người làm CAPTCHA cho bạn, chẳng hạn như "giải CAPTCHA để có được nội dung khiêu dâm miễn phí" hoặc bằng cách cung cấp một dịch vụ không liên quan yêu cầu CAPTCHA vì một số lý do, như bảng thông báo ẩn danh. Mỗi khi ai đó đăng bài, nó sẽ gửi cho bạn một truy vấn và nhận poster của nó để giải CAPTCHA của bạn. Ngoài ra còn có giải quyết CAPTCHA về cơ bản chế độ nô lệ trong thế giới thứ ba.

14

Tại sao?
[.__.] Dữ liệu liên quan đến số điện thoại, tên và địa chỉ email là vô cùng quý giá, cả trong thị trường hợp pháp và ngầm.

Thế nào?
[.__.] Có vẻ như ai đó đang sử dụng botnet để khai thác dữ liệu từ bạn. Điều này có thể có nghĩa là các kết nối từ vài chục IP rải rác trên toàn cầu đến hàng ngàn trong số chúng. Cá nhân tôi không biết làm thế nào họ có được xung quanh reCapchas, ngoài việc sử dụng lao động thủ công từ các trang web cung cấp dịch vụ giải quyết capcha. Tất cả những chi phí này cho họ tiền bằng cách này hay cách khác.

Giải pháp?
[.__.] Tuyên bố miễn trừ trách nhiệm: Tôi không phải là chuyên gia bảo mật.
[.__.] Một số dịch vụ miễn phí sử dụng hệ thống xếp hàng sau một số lượng truy vấn nhất định. Giả sử bạn không muốn làm quá tải hệ thống của mình, bạn cho phép tối đa 30 yêu cầu (hoặc bất kỳ số lượng yêu cầu đồng thời nào mà hệ thống của bạn có thể dễ dàng quản lý) bất cứ lúc nào. Các yêu cầu được đưa vào trong khi hàng đợi đầy sẽ nhận được một thông báo giải thích rằng máy chủ đang bận và họ phải thử lại sau đó hoặc được tự động xếp hàng. Giải pháp này không phải là không có vấn đề vì khách hàng hợp pháp của bạn đôi khi sẽ phải chờ để được phục vụ, đặc biệt là trong thời gian cao điểm hoặc trong một cuộc tấn công.

Bạn đã đề cập đến việc thay đổi phương pháp capcha của bạn để hạn chế các cuộc tấn công trong một thời gian. Có lẽ có một cách để thay thế phương thức capcha cho mỗi khách truy cập với mỗi yêu cầu ngẫu nhiên? Ít nhất kẻ tấn công sẽ phải viết lại một số phương thức của họ. Kịch bản trường hợp tốt nhất các cuộc tấn công thành công của họ được chia cho số lượng phương pháp khác nhau mà bạn kết hợp.

12
phLOx

Động lực của họ có thể đơn giản là họ đang tự xây dựng một dịch vụ tương tự và cần dữ liệu. Dịch vụ của bạn có thể là một trong những nguồn dữ liệu mà họ đã tìm thấy và cần phải cạo.

Bạn đã thử giới hạn tỷ lệ yêu cầu của bạn? Bạn nói rằng bạn nhận được hàng trăm phút (giả sử từ cùng một địa chỉ IP), sau đó bạn không thể đăng nhập các yêu cầu đó, phát hiện khách truy cập lặp lại trong một khoảng thời gian hợp lý và sau đó tạm thời cấm IP trong một khoảng thời gian?

Bạn cũng có thể thêm các yếu tố hình thức "honeypot" vào biểu mẫu của mình. Các yếu tố hình thức Honeypot được ẩn khỏi người dùng geniune, nhưng được tự động điền bởi bot. Mọi yêu cầu với dữ liệu trong (các) trường đó sẽ tự động bị loại bỏ và thậm chí có thể bị cấm.

3
Stephen Bailey

Đừng sử dụng một giải pháp captcha, sử dụng tất cả!

Vì bạn đã có nhiều cái khác nhau đặt xung quanh, tại sao không xoay chúng (ngẫu nhiên) trên cơ sở 2 giờ hoặc thậm chí mỗi yêu cầu? Ngay cả khi về mặt lý thuyết, những kẻ tấn công đã bẻ khóa tất cả chúng, chúng cần phải phát hiện loại captcha trong chính nó là một captcha khác để giải quyết cho máy tính (trong khi không ảnh hưởng đến con người).

Cũng có thể bao gồm các câu hỏi ngớ ngẩn như captcha như "số điện thoại nào bạn đang tìm kiếm lại", v.v. càng nhiều thứ ngẫu nhiên càng khó để làm điều đó cho bot.

Đặc biệt nếu bạn sử dụng các chuyên ngành khác nhau (nhận dạng hình ảnh, đọc số, toán, kiến ​​thức chung, v.v.), những người đóng chai sẽ gặp khó khăn trong việc theo dõi.

Và bạn không cần phải vượt qua họ một cách hoàn hảo, bạn chỉ cần làm cho nó không còn giá trị thời gian của họ nữa.

Chỉnh sửa: điều này cũng sẽ yêu cầu ném các loại captcha mới thường xuyên

2
Hobbamok

Vì vậy, tôi đang cố gắng để hiểu động lực của họ cũng như cách họ đang thực hiện điều này, để có thể chống lại một cách thích hợp.

Cũng có thể proxy được sử dụng để truy cập dịch vụ của bạn. Chỉ cần google cho open proxy list trả về một số trang web trình bày các proxy mở có thể được sử dụng cũng để che giấu địa chỉ IP của khách hàng.

Tôi đề nghị đăng nhập HTTP Header X-Forwarded-ForVia ở phía máy chủ một thời gian và sau đó kiểm tra xem có hợp lý không khi các proxy đó được sử dụng để lạm dụng hệ thống của bạn. X-Forwarded-For thường chứa địa chỉ IP của máy khách, Via chứa IP của proxy trong chuỗi (nếu có). Xin lưu ý rằng việc sử dụng proxy nói chung là hợp pháp, nhưng có thể có một số mẫu thú vị, ví dụ: nếu bạn thấy các proxy tương tự được sử dụng lặp đi lặp lại trong một khoảng thời gian tấn công.

2
mottek

Tôi không coi đây là một câu trả lời hoàn chỉnh. Tôi đang nói những gì tôi sẽ làm trong tình huống tương tự.

  1. Đăng nhập các truy vấn. Có bất kỳ mô hình trong các truy vấn của họ? ví dụ: Quốc gia cụ thể hoặc khu vực cụ thể. Trong trường hợp họ thực sự sử dụng kết quả, phải có một mô hình. Nếu không, tôi sẽ xem xét số 2.

  2. Bạn nói khi bạn thay đổi loại captcha và công nghệ, cuộc tấn công dừng lại trong khoảng 24 giờ. Tôi đọc nó theo cách này:

    Khi tôi chiến đấu trong 10 phút thời gian làm việc, tôi gây sát thương cho đối thủ trong 24 giờ làm việc.

    Vì vậy, tất cả những gì bạn cần làm là tiếp tục làm hỏng giờ của họ và kiên trì với điều đó. Nó làm cho bất cứ ai làm điều này, mệt mỏi, và bạn có thể chắc chắn họ là người đầu tiên ngừng chiến đấu. tỷ lệ thắng thực sự là -> 1 - (10/1440)

    Đó không phải là một giải pháp thực sự, thay vào đó, đó là điều tôi sẽ cân nhắc trước khi đến số 3.

    Hãy nhớ rằng, họ có thể quay lại vào tháng tới hoặc sáu tháng sau, nhưng bây giờ họ biết bạn đang kiên trì chống trả, và bạn là người mất quá ít.

    Bạn thậm chí có thể làm cho việc đấu tranh cho họ khó khăn hơn một chút, ví dụ, hơn 3 truy vấn trong một ngày, yêu cầu người dùng nhập 2 loại hình xác thực. sau ngày 10, hệ thống cứng hơn nữa, theo cách mà khách truy cập thực sự của bạn sẽ không nhận ra điều đó.

  3. Buồn nhưng sử dụng ủy quyền. Thậm chí, bạn có thể tùy ý làm cho n (n <10) truy vấn đầu tiên có sẵn một cách bất hợp lý, nhưng nhiều hơn yêu cầu đăng nhập.

1
FarhadGh

Tôi đã phát triển một hình thức liên lạc mà những kẻ lạm dụng đã cố gắng lạm dụng trong hơn một năm nay và đã liên tục thất bại.

Cách tiếp cận của tôi bao gồm sự kết hợp của:

  1. Sau khi mỗi trường bắt buộc xác thực, nó sẽ kích hoạt lệnh gọi ajax, lấy ra một tên trường được tạo ngẫu nhiên 32-48 ký tự mới được lưu tạm thời trong bảng db xác thực mẫu. Sau đó, khi biểu mẫu được gửi, một trường đến với một tên chưa được tạo bởi máy chủ hoặc có tên trường kích hoạt ban đầu đăng nhập vào địa chỉ IP từ xa db cũng như những gì họ đã gửi liên quan đến việc gửi biểu mẫu. Khi tên trường được thay đổi, bất kỳ đệ trình nào với tên trường ban đầu được phát hiện là lạm dụng và được xử lý tương ứng.
  2. Chúng phải ở trên trang, biểu mẫu được bật ít nhất 1,3 giây cho mỗi trường bắt buộc và tất cả các trường phải được xác thực trước khi thuộc tính vô hiệu hóa nút gửi được xóa và ít nhất tên của đầu vào gửi được thay đổi bằng ajax mới cuộc gọi hoặc tên và hoặc giá trị nhận được từ cuộc gọi tên trường ajax trước đó. Tên và giá trị nút phải khớp trong quá trình xác thực mẫu trên máy chủ hoặc lạm dụng được phát hiện và xử lý tương ứng.
  3. Tôi ghi nhật ký tất cả các lần gửi vào db và gắn cờ lạm dụng với mục tiêu DENY và một khi chúng đã lạm dụng biểu mẫu của tôi, chúng sẽ bị chặn vĩnh viễn ngay cả khi truy cập trang biểu mẫu và được chuyển hướng trực tiếp đến phản hồi 403 sau khi đăng nhập lần truy cập đã thử.
  4. Trong một trong các cuộc gọi ajax, đôi khi tôi sẽ tạo ngẫu nhiên một trường và giá trị mới được thêm vào biểu mẫu trước khi gửi và phải có mặt hoặc việc gửi sẽ không được xác thực và sẽ bị phát hiện là lạm dụng.
  5. Bạn có thể bao gồm các trường honeypot nhưng không ẩn đối tượng trường mà nó sẽ được phát hiện. Ẩn một đối tượng cha nếu bạn sẽ ẩn trường. Bạn cũng có thể định vị nó một cách tuyệt đối và định vị nó xa tầm nhìn. Bất kỳ trường honeypot nào đi vào máy chủ có giá trị dưới bất kỳ hình thức nào đều bị phát hiện là lạm dụng và bị xử lý như vậy.

Đảm bảo ghi nhật ký tất cả các nội dung gửi để bạn có thể theo dõi các mẫu mới nhằm phá vỡ bảo mật của bạn.

1
Dan Stepaniak