短信發(fā)送接口被惡意訪問的網(wǎng)絡(luò)攻擊事件(一)緊張的遭遇戰(zhàn)險(xiǎn)勝

<h1>事件簡述</h1>

這是一件發(fā)生在前段時(shí)間的事情,當(dāng)時(shí)的情況是這樣的:一個(gè)新的功能模塊上線之后粘驰,出現(xiàn)短信接口被惡意訪問調(diào)用的情況,請求數(shù)量很大,而且通過查看短信服務(wù)商控制臺(tái)也發(fā)現(xiàn)展东,短信發(fā)送量在飆升艺栈,看著統(tǒng)計(jì)曲線的增長捎泻,緊張的氣氛也漸漸變得更濃诬乞,很明顯,事情并不是遇到一個(gè)bug那么簡單慢叨,因?yàn)闋可娴椒?wù)費(fèi)用纽匙,需要立即解決。

當(dāng)然拍谐,接口被惡意訪問的這個(gè)問題已經(jīng)解決烛缔,因此寫了這篇文章馏段,可以做一下簡單的記錄,并且靜下心來分析一下其中的問題了践瓷,看完這個(gè)案例院喜,大家也可以一起討論討論。

<h1>問題分析</h1>

日志增長

這是當(dāng)時(shí)的短信接口日志數(shù)量曲線晕翠,某一個(gè)時(shí)間點(diǎn)突然增長了起來并且沒有降下去的意思喷舀,通過日志分析發(fā)現(xiàn),攻擊者用的不同IP淋肾、不同號(hào)碼進(jìn)行惡意調(diào)用硫麻,請求量較大,趕緊將事件做了記錄并通知了相關(guān)人員樊卓,和同事做了溝通后拿愧,大家也都提出了自己的意見:有人說趕緊修改前端功能,發(fā)一版新的APP碌尔,有人說修改后端代碼浇辜,緊急補(bǔ)救一下,也有人說要不要先關(guān)停一下服務(wù)......在網(wǎng)上技術(shù)論壇搜了一下相關(guān)問題唾戚,好像碰到這種事情的也不少柳洋,基本思路都是加驗(yàn)證碼,做好安全驗(yàn)證叹坦,被攻擊了無可奈何之類的云云熊镣。

簡單對各個(gè)方案做了整理:

  • 修改url(APP已經(jīng)上線,暫時(shí)無法修改)立由。
  • 添加驗(yàn)證碼驗(yàn)證(APP已經(jīng)上線轧钓,暫時(shí)無法通過這種方式來解決)。
  • 停掉短信服務(wù)(不現(xiàn)實(shí)锐膜,其他功能模塊也需要調(diào)用短信服務(wù),不考慮實(shí)施)弛房。
  • 短信服務(wù)商自帶防攻擊道盏,等一段時(shí)間,讓攻擊者自己停止攻擊(雖然短信服務(wù)商自帶防攻擊文捶,但是依然會(huì)出現(xiàn)大量的垃圾請求荷逞,而且服務(wù)商只是針對次數(shù)和時(shí)間做了限制,一段時(shí)間后依然會(huì)發(fā)送短信粹排,因此种远,危害和損失還是不小的,問題依然急需處理掉顽耳,裝鴕鳥是解決不了問題的)

<h1>解決方案</h1>

在用戶交互界面攔截請求已經(jīng)不現(xiàn)實(shí)了坠敷,因?yàn)橐苿?dòng)端短時(shí)間內(nèi)是無法立刻升級的妙同,而等待攻擊停止的方案也不可取,選擇逃避和等待是解決不了問題的膝迎,因此最終的決定就是修改后端接口邏輯和代碼粥帚。找到最關(guān)鍵的問題,雖然存在網(wǎng)絡(luò)攻擊限次,但是真正需要立刻解決的是短信服務(wù)接口的調(diào)用問題芒涡,當(dāng)務(wù)之急是修改短信發(fā)送接口,盡快止損卖漫。

通過討論和簡單的分析费尽,最終是決定先修改后端邏輯緊急打一個(gè)線上補(bǔ)丁,移動(dòng)端也做同步修改羊始,等待發(fā)版依啰。

<h1>黑名單模式攔截</h1>

由于接口一直被調(diào)用,需要緊急處理店枣,減少短信服務(wù)費(fèi)用的損失速警,因此一開始的出發(fā)點(diǎn)放在了手機(jī)號(hào)碼上,針對手機(jī)號(hào)碼做驗(yàn)證鸯两,采用黑名單的模式闷旧,對于此接口中出現(xiàn)的號(hào)碼,在一定次數(shù)的請求后就立刻加入到黑名單列表中钧唐,再次請求時(shí)忙灼,如果是黑名單中的號(hào)碼,直接返回錯(cuò)誤碼钝侠,不做任何其他處理该园,也不會(huì)調(diào)用短信發(fā)送接口,這種方式可能會(huì)誤傷到真實(shí)用戶帅韧,但是情況比較特殊里初,因此就選擇了這個(gè)應(yīng)急方案,緊急修改了后端代碼忽舟,對部分代碼邏輯做了修改双妨,添加手機(jī)號(hào)碼的黑名單功能。在短信發(fā)送模塊中叮阅,對號(hào)碼進(jìn)行驗(yàn)證刁品,如果一段時(shí)間內(nèi)多次請求同一個(gè)號(hào)碼的話,將號(hào)碼存入數(shù)據(jù)庫視為黑名單中的號(hào)碼浩姥,不會(huì)發(fā)送短信挑随。


黑名單模式

攔截了近700個(gè)手機(jī)號(hào)碼,這些號(hào)碼中應(yīng)該很多是空號(hào)吧:


短信黑名單

<h1>請求驗(yàn)證攔截</h1>

上面的方法雖然起到了一定的作用勒叠,但是依然無法很好的解決掉問題兜挨,為什么這么說呢膏孟?因?yàn)榧词估昧撕诿麊文J剑谶M(jìn)入到黑名單列表之前暑劝,依然會(huì)發(fā)送短信骆莹,試想一下每分鐘1000次的惡意請求,即使拉黑了其中的一部分號(hào)碼担猛,還是會(huì)有一部分漏網(wǎng)之魚會(huì)被當(dāng)做正常數(shù)據(jù)幕垦,然后請求短信服務(wù)商接口發(fā)送短信,這也是一個(gè)不小的體量傅联,黑名單模式可以處理一些問題先改,但是只能起到微小的作用,還需要進(jìn)一步修改后端邏輯蒸走。

回到大家都提到的用驗(yàn)證碼做安全驗(yàn)證仇奶,前端雖然無法立即更新添加驗(yàn)證碼界面和處理邏輯,但是驗(yàn)證碼的設(shè)計(jì)就是識(shí)別正常請求和非法請求比驻,因此找到一個(gè)方法能夠識(shí)別請求是否非法即可该溯,并不一定非要添加驗(yàn)證碼功能。本模塊在設(shè)計(jì)接口之初别惦,就做了數(shù)據(jù)傳輸規(guī)定狈茉,移動(dòng)端向后端發(fā)送請求時(shí),必須在請求頭中放入一些參數(shù)掸掸,這些參數(shù)本來是做分析用的氯庆,但是在這里起到了很大的作用,因此可以在請求對象request上做文章扰付,攻擊請求只是發(fā)送請求到url堤撵,攻擊者也只知道url并不知道請求參數(shù)設(shè)計(jì),因此針對這點(diǎn)做驗(yàn)證羽莺,應(yīng)該可以攔截掉所有的惡意請求了实昨,甚至請求都不會(huì)到達(dá)黑名單驗(yàn)證環(huán)節(jié)就已經(jīng)被處理掉了。

再次修改后端代碼禽翼,由請求信息request對象入手屠橄,從請求對象request中提取數(shù)據(jù)做校檢,甄別是否為正常請求闰挡,如果是正常請求,數(shù)據(jù)中的參數(shù)不會(huì)為空且參數(shù)值是可控的礁哄,而惡意虛假請求中則不含有這些參數(shù)长酗,因此直接返回錯(cuò)誤碼不作處理即可,這個(gè)補(bǔ)丁打上之后桐绒,短信服務(wù)費(fèi)用的損失就不會(huì)再增加了夺脾。


驗(yàn)證參數(shù)

非法請求不做處理之拨,甚至都已經(jīng)不需要黑名單攔截了。

短信發(fā)送量圖片

當(dāng)時(shí)的短信發(fā)送量統(tǒng)計(jì)咧叭,在做了驗(yàn)證之后蚀乔,直接降了下去。

<h1>結(jié)語</h1>

不管是前端驗(yàn)證碼菲茬,或者這次采取的驗(yàn)證請求方式吉挣,都是一種驗(yàn)證方式,用來甄別是否為移動(dòng)端APP發(fā)送過來的正常請求婉弹,如果不是睬魂,就不做處理,通過日志和黑名單數(shù)據(jù)可以得出結(jié)論镀赌,短信發(fā)送的問題已經(jīng)解決氯哮。

這個(gè)事件也說明,安全驗(yàn)證不能掉以輕心商佛,也不能心存僥幸心理喉钢,一旦被心存惡意之人找到漏洞,還是挺難過的良姆。前端驗(yàn)證沒有完全考慮到肠虽,后端驗(yàn)證攔截也做的不到位,因此出現(xiàn)了這種情況歇盼,需要檢討和反思舔痕,而且處理方式也不是特別得當(dāng),一開始的黑名單模式并沒有完全杜絕掉短信發(fā)送的問題豹缀,又去做了后面的補(bǔ)救伯复,當(dāng)時(shí)確實(shí)比較緊張,因此想到能用的方法就趕緊用在了修改上面邢笙。

為何說驚險(xiǎn)和緊張啸如,試想一下:周末剛剛在家里修整了兩天,周一的早晨氮惯,打完卡坐在工位上悠閑的喝著茶叮雳,悠悠的打開瀏覽器查看系統(tǒng)日志,忽然發(fā)現(xiàn)這個(gè)訪問量有點(diǎn)大呀妇汗,隱隱覺著不對帘不,認(rèn)真的查了一下發(fā)現(xiàn),接口被攻擊了杨箭,而且是短信發(fā)送的接口寞焙,看著一條條的短信因?yàn)楣舳l(fā)送出去,那一條條的短信,是白花花的銀子啊捣郊,能不緊張嗎辽狈!什么感覺?吃著火鍋唱著歌呛牲,突然就被麻匪給劫了刮萌,跟葛大爺一樣,就是那種感覺娘扩。

至于說險(xiǎn)勝着茸,是因?yàn)?strong>雖然暫時(shí)解決了短信發(fā)送的問題,不會(huì)再進(jìn)一步的造成金錢的損失畜侦,卻存在另外一個(gè)問題:大量的惡意請求元扔。

首發(fā)于我的個(gè)人博客,地址在這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旋膳,一起剝皮案震驚了整個(gè)濱河市澎语,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌验懊,老刑警劉巖擅羞,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異义图,居然都是意外死亡减俏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門碱工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娃承,“玉大人,你說我怎么就攤上這事怕篷±荩” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵廊谓,是天一觀的道長梳猪。 經(jīng)常有香客問我,道長蒸痹,這世上最難降的妖魔是什么春弥? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮叠荠,結(jié)果婚禮上匿沛,老公的妹妹穿的比我還像新娘。我一直安慰自己榛鼎,他們只是感情好俺祠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布公给。 她就那樣靜靜地躺著借帘,像睡著了一般蜘渣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肺然,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天蔫缸,我揣著相機(jī)與錄音,去河邊找鬼际起。 笑死拾碌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的街望。 我是一名探鬼主播校翔,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灾前!你這毒婦竟也來了防症?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤哎甲,失蹤者是張志新(化名)和其女友劉穎蔫敲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炭玫,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奈嘿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吞加。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裙犹。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衔憨,靈堂內(nèi)的尸體忽然破棺而出叶圃,到底是詐尸還是另有隱情,我是刑警寧澤巫财,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布盗似,位于F島的核電站,受9級特大地震影響平项,放射性物質(zhì)發(fā)生泄漏赫舒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一闽瓢、第九天 我趴在偏房一處隱蔽的房頂上張望接癌。 院中可真熱鬧,春花似錦扣讼、人聲如沸缺猛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荔燎。三九已至耻姥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間有咨,已是汗流浹背琐簇。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留座享,地道東北人婉商。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像渣叛,于是被迫代替她去往敵國和親丈秩。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容