PDA

查看完整版本 : 被 BOT 攻擊


robowang
2006-10-31, 03:01 PM
最近幫忙照顧的一個討論區, 被自動貼文機器人貼了一堆垃圾文章, 刪得累死了
我看本論壇似乎不曾發生過被 BOT 亂貼文的情形,
請問是不是這個論壇程式 vBulletin 比較不會被 BOT 攻擊 ?

哈啦
2006-10-31, 03:23 PM
不是,最近也有一部份bot在這裡濫貼廣告文,但因為它們只能以未註冊的身份貼在閑聊區而且還必需經過站長的認可才能貼出,所以一般版友是看不到的。

seesawgame
2006-10-31, 03:29 PM
我的 xoops 跟 vbb 都這樣的情形說

robowang
2006-10-31, 04:28 PM
看起來似乎沒有一套論壇程式有辦法完全阻絕這種機器人
剛剛看了一些討論, 好像連需要目視輸入一些確認碼才能發表文章的做法, 也會被 BOT 攻破....
廣告機器人還真是無孔不入 !

dale
2006-10-31, 07:08 PM
我剛開始用 SMF 時還沒有這種情況,最近也愈來愈多了,但大部分都集中在開放給 guest 潑文章的地方,所以還好。:)

steven
2006-10-31, 07:28 PM
就肆虐程度來說,SMF目前還不錯,目前只有在開放guest的版面遭受公司.

kuekhh
2006-10-31, 07:37 PM
我的論壇這一陣子也是這種情況
所以都改成要註冊才能發帖
就沒再發生了

Ricado
2006-10-31, 09:29 PM
前陣小小弟的論壇也收到大量攻擊,好玩的是一堆 IP 上來砍站,另外一堆不斷的嘗試貼文,而且持續兩三天,最高同時線上人數到大600~700,小弟的論壇從來也沒這麼熱。~embarass:

我以為只有我中了,看來大家都被拿來當試驗品了,感覺是在測是發文工具,因為就行為模式來說不大像是要發垃圾文,一般都是亂槍打鳥,貼了就跑,絕對不會那麼堅定的試了那麼久。

dmwc
2006-10-31, 11:34 PM
提供你一個我被攻擊到不行後過濾IP的列表,最高紀錄一小時就收到>50個廣告文,而且他每篇的IP都不一樣,夠慘吧


60.55.169.*
63.247.85.10
202.3.165.194
195.225.*.*
195.225.176.*
195.225.177.*
69.93.25.*
216.75.15.*

59.25.1.*
210.75.106.*
216.75.15.*
84.96.92.*
58.121.51.*
193.227.17.*
63.17.64.*
202.143.133.*
217.171.176.*

80.249.70.*
203.113.13.*
200.139.104.*
210.87.251.*
222.45.36.*
222.108.205.*
218.56.144.*
217.171.176.*
80.249.70.*

200.242.43.*
81.196.41.*
220.79.122.*
58.78.61.*
80.249.73.*
219.120.28.*
84.96.92.*
81.196.41.*
218.98.38.*

58.120.182.*
61.185.219.*
88.152.57.*
203.113.13.*

robowang
2006-11-01, 07:58 AM
通常要避免這種透過機器人張貼廣告的事件發生, 最好的方法就是要求發文時,
必須要輸入螢幕上顯示的一張圖片內的文字, 也就是所謂的 Visual Confirm,
因為機器人無法辮識圖片內的文字, 所以可以避免機器人的肆虐

但我昨天看了一些討論, 似乎有些機器人可以突破這種封鎖方式 ?
不曉得有沒有網友即使用了 Visual Confirm 還是被 BOT 攻擊的 ?

如果連 Visual Confirm 都會被突破, 那麼我想大概只能採取另一種方法來封鎖了,
就是修改論壇程式, 讓論壇只能被包在一個 html 頁的 Frame 裏頭執行,
而這個 html 頁的域名卻跟論壇的域名不同, 如此一來, 基於安全的理由,
IE 不會讓機器人存取 Frame 裏頭的網頁內容, 機器人就無法貼文了,
但對一般的使用者卻不會有什麼影響

dmwc
2006-11-01, 12:03 PM
讓論壇只能被包在一個 html 頁的 Frame 裏頭執行,
而這個 html 頁的域名卻跟...
這樣的方法其實缺點是網址列顯示不會變,而且檢查是不是在Frame裡頭也只是利用 javascript 確認,在後端的程式裡並沒辦法真正得知是不是真的在Frame裡,就算你動用Cookies 確認,也只是複雜了點依然可以破解 (但是這樣做會對你server負載大增,可能代價比被寫入spam還嚴重)

如果真的要徹底阻擋,唯有使用JAVA or ActiveX,這個才有可能完全徹底阻擋

robowang
2006-11-01, 12:42 PM
這樣的方法其實缺點是網址列顯示不會變,而且檢查是不是在Frame裡頭也只是利用 javascript 確認,在後端的程式裡並沒辦法真正得知是不是真的在Frame裡,就算你動用Cookies 確認,也只是複雜了點依然可以破解 (但是這樣做會對你server負載大增,可能代價比被寫入spam還嚴重)

如果真的要徹底阻擋,唯有使用JAVA or ActiveX,這個才有可能完全徹底阻擋

包在不同網域的 Frame 裏執行, 當然最終還是可以被破解, 但這個方法很簡單,
只要在各網頁裏加一個指令檢查是否在 Frame 內執行, 這樣就可以了,
而且應該對目前所有的 BOT 都有效,
除非有人故意要搞你的網站, 否則大概從此以後你都不會再被機器人亂貼文了

使用 ActiveX, 則因為安全性的理由, 絕大多數電腦都不允許執行 ActiveX 控制項,
ActiveX 不容易在瀏覽器中被運行

至於使用 JAVA , 我不清楚 dmwc 你的意思 ? 你所謂的使用 JAVA 來防堵 BOT, 是怎樣的機制 ?
能不能稍做說明 ? 謝謝 !

dmwc
2006-11-01, 01:01 PM
只要在各網頁裏加一個指令檢查是否在 Frame 內執行

至於使用 JAVA , 我不清楚 dmwc 你的意思 ? 你所謂的使用 JAVA 來防堵 BOT, 是怎樣的機制 ?能不能稍做說明 ? 謝謝 !
1. 不曉得是啥指令可以做到防止BOT post ? 應該指導我一下,依照我所知,只能在Frame寫入一個cookies或Session(其實session就是cookies的應用),在ASP.Net可以多一個viewstate,不過一樣消耗資源,消耗資源的阻擋BOT可能會造成server負載問題

但大都是用javascript 判斷,其實BOT只管Post,你網頁有啥javascript他都無所謂

2. 用JAVA 就是例如站長俱樂部的聊天室那種,除非他用控制鍵盤滑鼠等級的BOT,不然應該沒招可以直接Post資料

其他.
其實要防的很徹底也不是做不到,只是很花功夫,目前的BOT大都是先派蜘蛛來爬你網站資料張貼格式,爬完後指派到各BOT server直接張貼資料,也就是BOT張貼資料時不會先瀏覽任何網頁就可以把資料貼上,只要你能再張貼資料的欄位多一欄隨機確認碼,就可以檔掉大部分的BOT

但是我遇過真人的BOT,他是用Ctrl+C Ctrl+V貼的那種,那個就真的無解,大概是那裡工資便宜可以請工人貼吧

robowang
2006-11-01, 03:01 PM
我簡單說明一下我所提到的方法:
假設我對外公佈的論壇網址是: http://robowang.net/ForumTest.htm
而實際上真正的網址是: http://www.emeitech.com/NewPost.htm
我用 ForumTest.htm 包住 NewPost.htm, 讓 NewPost.htm 在框架內執行,
NewPost.htm 會用 JavaScript 檢查是否本身位於框架內執行 ?
如果是, 則一切正常; 如果不是, 則導引到 Error.htm, 不允許貼文

這樣看起來好像沒什麼作用, 但由於 ForumTest.htm 與 NewPost.htm 分屬不同的網域,
因此 IE 將不允許存取框架內 NewPost.htm 的內容,
機器人看不到 NewPost.htm 的內容, 也就無法直接將廣告寫入 NewPost.htm 的輸入欄位中

這裏有一些程式師, 不妨寫個程式試試,
看看能不能用程式把文字寫入 NewPost.htm 的輸入欄位中, 然後由程式按下『送出』按鈕 ?

Ricado
2006-11-01, 03:13 PM
垃圾文和垃圾郵件一樣讓人討厭,尤其類似小狗隨地大小便式的貼文方式更讓人受不了。

若是碰到有組織或是企業委託的,小弟通常會處理以下幾個方式:
1.對於網路老鼠會,直接用程式置換的方式換成一陀大便。
2.如果是企業委託,發份文給委託的企業,如果是企業業務自己幹的好事,尤其屢勸不聽,就連絡客服,大一點的就直接發文管理部,之前某銀行行員就因此被公司處分,畢竟企業還是要形象的。
3.如果有留Mail或手機的那更好,不用我教各位怎麼做吧。?:teeth

至於隨地大小便式的,也只能刪多少算多少,。

achilles
2006-11-01, 05:36 PM
你的方法可以破解,而且很容易,只要寫個程式,用 "post" 方法將欄位的值送到你的接收位址即可。

而這也是最普遍使用的方法。

不然你寫個程式將 user 曾輸入過的值,儲存並顯示在網頁上,讓我來試看看。

因為所謂的 Robot 並不是開啟瀏器自動在那邊點按鈕,它是先解析網頁的內容,找出表單可接受的欄位,再使用 "GET" 或 "POST" 方法將欄位的資料傳送到程式指定的位址。

所以現在的討論區、留言版才會使用一些 "圖案欄位" 來讓 Robot 無法判別出來。

我簡單說明一下我所提到的方法:
假設我對外公佈的論壇網址是: http://robowang.net/ForumTest.htm
而實際上真正的網址是: http://www.emeitech.com/NewPost.htm
我用 ForumTest.htm 包住 NewPost.htm, 讓 NewPost.htm 在框架內執行,
NewPost.htm 會用 JavaScript 檢查是否本身位於框架內執行 ?
如果是, 則一切正常; 如果不是, 則導引到 Error.htm, 不允許貼文

這樣看起來好像沒什麼作用, 但由於 Fo...

cony
2006-11-01, 06:56 PM
我個人的討論板及留言板也是這樣
最近刪文都有點手軟了
VBB看起來好像比較沒問題, 在考慮轉換這一套系統

robowang
2006-11-01, 07:28 PM
你的方法可以破解,而且很容易,只要寫個程式,用 "post" 方法將欄位的值送到你的接收位址即可。

而這也是最普遍使用的方法。

不然你寫個程式將 user 曾輸入過的值,儲存並顯示在網頁上,讓我來試看看。

因為所謂的 Robot 並不是開啟瀏器自動在那邊點按鈕,它是先解析網頁的內容,找出表單可接受的欄位,再使用 "GET" 或 "POST" 方法將欄位的資料傳送到程式指定的位址。

所以現在的討論區、留言版才會使用一些 "圖案欄位" 來讓 Robot 無法判別出來。

你儘可以試試看

機器人大概都是透過 IE 的 COM 介面(例如 IHtmlDocument) 存取網頁內容的,
但你可能不知道, IHtmlDocument 這類介面並不允許存取跨網域的網頁內容,
因此我特別使用兩個網域來處理, 只要把實際的網域, 用另一個網域的 Frame 包起來,
這樣透過 IHtmlDocument 之類的介面, 就讀不到東西了
機器人讀不到網頁內容, 當然就無法進行解析(其實是向 IE 要求解析之後的各個物件),
雖然我沒試過, 但我相信這樣簡單用 Frame 包起來, 應該就可以防堵目前所有的機器人

如果你不相信的話, 你可以試試看, 是否有辦法用程式取得我前面提到的 NewPost.htm 的內容 ?
(我個人寫的程式是沒辦法存取這樣的頁面內容, 我唯有使用 Sniffer Pro 之類的軟體才能存取)

achilles
2006-11-06, 04:06 PM
我正要試,不過你的程式目前並不能寫入資料,我怎麼試呢?

請先讓你的程式可以儲存 user 輸入的資料,並將輸入的資料逐筆列出來在網頁上,然後我寫個 spam 的程式,將一些資料塞入你的程式,以此方法來驗證看看我的想法對不對。

你儘可以試試看

機器人大概都是透過 IE 的 COM 介面(例如 IHtmlDocument) 存取網頁內容的,
但你可能不知道, IHtmlDocument 這類介面並不允許存取跨網域的網頁內容,
因此我特別使用兩個網域來處理, 只要把實際的網域, 用另一個網域的 Frame 包起來,
這樣透過 IHtmlDocument 之類的介面, 就讀不到東西了
機器人讀不到網頁內容, 當然就無法進行解析(其實是向 IE 要求解析之後的各個物件),
雖然我沒試過, 但我相信這樣簡單用 Frame 包起來, 應該就可以防堵目前所有的機器人

如果你不相信的話, 你可以試試看, 是否有...

robowang
2006-11-07, 12:12 PM
請用底下的連結進行測試:
http://robowang.net/ForumTest2.htm

網頁程式我只會用 ASP.NET 來寫, 沒辦法提供 PHP 的例子, Sorry !

achilles
2006-11-10, 02:18 PM
請用底下的連結進行測試:
http://robowang.net/ForumTest2.htm

網頁程式我只會用 ASP.NET 來寫, 沒辦法提供 PHP 的例子, Sorry !

您的網頁只要產生類似:
http://forum.emeitech.com/(lpdhva2lpef12bqr43kpue45)/NewPost.aspx?__VIEWSTATE=dDwyMDE4OTI5MDg4Ozs%2BLOVnzEApeV7svCjxRJQyn33uf7I%3D&Button1=%BDT%BB%7B&TextBox1=message

這樣的網址就可以把資料塞到你的資料庫了,不需所謂的 "機器人"。

其中 "220.128.231.xxx" 是我的 IP,之前的 "59.105.27.xxx" 所發表的 "posted by wget" 應該也是使用相同的方法,寫個迴圈用 linux 的 wget 去存取上列的網址即可。

在此建議你:

1. 既然你上層有加個帳號/密碼驗證,為何沒有在 NewPost.aspx 裡做判斷?
2. NewPost.aspx 應再判斷資料是否以 "POST" 方法送出,如果不是,就不接收資料。
3. NewPost.aspx 應再檢查伺服器的 HTTP_REFERER 參數(Windows 的網頁伺服器似乎沒有提供這個參數),看看資料是否來自你自己的網頁。
4. NewPost.aspx 應再檢查伺服器的 HTTP_USER_AGENT 參數判斷是否在自主流的瀏覽器。
5. 增加一欄 "圖片文字" 來讓使用者輸入。

不過我自己寫的程式,用了前四點,還是會被 SPAM 攻破,因為那些資料都是可以偽裝送出,而第 5 點,目前已經逐漸被破解了,只是比較費功夫而已。

原本上面的資料只想發訊息跟你說的,但最後我還是選擇發表在網站上,因為這樣可以有更多的討論,希望你可以見諒。

robowang
2006-11-10, 03:45 PM
我所做的那個測試網頁程式, 非常簡單, 並沒有做很多檢查, 只有:
1. 在前端以 JavaScript 檢查是否網頁被包在 Frame 當中
2. 在 NewPost.aspx 中, 透過 Session 檢查是否使用者已登入
就是如此而已, 第 2 步驟是任何論壇程式都會進行的檢查,
我只是多加了第 1 步驟, 目的是希望能用這個簡單的動作, 防止BOT攻擊
當然, 我也明白這些都無法防止『針對性』的攻擊, 但對於網路上自動偵測與攻擊的機器人
我想應該可以防止才對

所謂『針對性』的攻擊, 是指以半人工的方式進行攻擊, 非要攻擊成功不可。這是無可防堵的
我想請問你, 你是否用人工方式取得 NewPost.aspx 的內容 ?
以人工分析之後, 再寫程式將資料存入 ?

我這裏希望找到一個簡單方法(只要加一行 JavaScript 指令), 來防堵『自動』攻擊的機器人
如果機器人是程式輔以人工分析, 那麼任何防堵的方法都無效

some
2006-11-10, 05:23 PM
您的網頁只要產生類似:
http://forum.emeitech.com/(lpdhva2lpef12bqr43kpue45)/NewPost.aspx?__VIEWSTATE=dDwyMDE4OTI5MDg4Ozs%2BLOVnzEApeV7svCjxRJQyn33uf7I%3D&Button1=%BDT%BB%7B&TextBox1=message

這樣的網址就可以把資料塞到你的資料庫了,不需所謂的 "機器人"。

其中 "220.128.231.xxx" 是我的 IP,之前的 "59.1...

第5點 攻破的原理是什麼?

本來我的留言板也一直被灌留言..
自從我加圖片驗證就不再出現過了
http://asset.tw/guest/add.php?action=new

achilles
2006-11-10, 06:05 PM
可以參考一下這個網頁: http://sam.zoy.org/pwntcha/

不過我認為圖片驗證仍是目前最安全的方式

第5點 攻破的原理是什麼?

本來我的留言板也一直被灌留言..
自從我加圖片驗證就不再出現過了
http://asset.tw/guest/add.php?action=new

mailking
2006-12-27, 09:00 PM
我可以提供一下一ㄍ方式
我ㄉ流言板現在沒用任何認證
可是之前也是會被貼
後來我炸她們IP 因為她們固定用那幾個ip
炸過幾次就再也不敢來了

dmwc
2006-12-27, 11:08 PM
後來我炸她們IP 因為她們固定用那幾個ip
炸過幾次就再也不敢來了
可以告訴你,這招其實是無效的,他們機器人只是在租一台主機,然後在上面跑程式去灌別人,國外主機大都頻寬大的很,你的那一點點小頻寬能起啥作用?

wmh
2006-12-27, 11:43 PM
防止機器人的方式除了圖片還可以用語音,當然不論文字或語音的防堵方式,在可見的未來,都有可能被結合辨識技術去破解。所以,在這些基本的技術上還可以加上一些變化,例如需要經過人類思考才能選擇出答案的。

例如,選三張自然界的圖片:
http://www.gigoit.org/humanauth/