墨云霄和黎清清第一次見(jiàn)面,是在跨境數(shù)據(jù)安全峰會(huì)的緊急會(huì)議室里。
彼時(shí)服務(wù)器遭不明攻擊,核心代碼就像是被無(wú)形的手拆解,屏幕上的數(shù)據(jù)流亂成蛛網(wǎng)。
主辦方負(fù)責(zé)人急得滿頭汗,指著黎清清介紹到“這位是黎清清,專攻網(wǎng)絡(luò)逆向追蹤”時(shí),
女人剛放下筆記本電腦,指尖還沾著沒(méi)擦干凈的鍵盤微光。她穿著簡(jiǎn)單的黑襯衫,
她把頭發(fā)利落地盤在腦后,露出光潔的額頭,整個(gè)人顯得干凈又干練,透著一股利落勁兒。
抬眼看向他——業(yè)內(nèi)以“架構(gòu)防御無(wú)死角”聞名的墨云霄,眼里沒(méi)半分局促,
只伸手遞過(guò)一份實(shí)時(shí)追蹤報(bào)告:“攻擊源偽裝成了常規(guī)訪問(wèn)請(qǐng)求,
但數(shù)據(jù)包有3.7秒的延遲異常,你那邊防火墻日志,查這個(gè)時(shí)間段的底層交互?
”會(huì)議室里的空調(diào)風(fēng)帶著涼意,卻壓不住屏幕藍(lán)光映出的焦灼。
墨云霄指尖在鍵盤上飛快跳躍,調(diào)出的防火墻日志像展開(kāi)的細(xì)密蛛網(wǎng),他盯著時(shí)間軸滑動(dòng),
直到黎清清說(shuō)的那個(gè)3.7秒節(jié)點(diǎn)——一行被系統(tǒng)標(biāo)記為“常規(guī)維護(hù)”的指令藏在數(shù)據(jù)流里,
字符排列看似規(guī)整,尾端卻綴著個(gè)極隱蔽的異常校驗(yàn)位?!罢业搅??!彼а蹠r(shí),
黎清清正彎腰看他的屏幕,黑襯衫領(lǐng)口蹭過(guò)筆記本邊緣,露出一小截線條利落的脖頸。
她沒(méi)接話,只從口袋里摸出支筆,
在報(bào)告空白處畫了個(gè)簡(jiǎn)易拓?fù)鋱D:“攻擊路徑是從東南亞節(jié)點(diǎn)跳轉(zhuǎn)過(guò)來(lái)的,
我追蹤到三級(jí)代理,但最后一層加密用了動(dòng)態(tài)密鑰,得反向破解算法。
”她說(shuō)話時(shí)筆尖頓了頓,墨色字跡在紙上很輕,思路卻像釘進(jìn)木板的釘子,
每一下都落在關(guān)鍵處。墨云霄團(tuán)隊(duì)的技術(shù)總監(jiān)在旁咋舌——他們盯著日志查了半小時(shí),
愣是沒(méi)注意到那幾秒的延遲異常,這女人卻憑數(shù)據(jù)包延遲就鎖定了方向。
“我讓技術(shù)組拆算法?!蹦葡霭聪聝?nèi)部通訊器,余光瞥見(jiàn)黎清清正把筆記本往桌上放,
屏幕上還亮著追蹤界面,密密麻麻的代碼間,她用熒光筆標(biāo)了串紅色字符,
正是他剛找到的惡意代碼同源特征?!安挥茫崩枨迩搴鋈婚_(kāi)口,指尖點(diǎn)了點(diǎn)自己的屏幕,
“我逆向了前兩層加密,密鑰生成邏輯有規(guī)律,給我十分鐘,能扒出最后一層的密鑰庫(kù)位置。
”她重新坐直時(shí),盤發(fā)的皮筋松了點(diǎn),幾縷碎發(fā)垂在鬢角,卻沒(méi)抬手?jǐn)n。
墨云霄看著她指尖在觸控板上翻飛,屏幕上的代碼流跟著跳躍,
忽然覺(jué)得這緊急會(huì)議室里的慌亂,好像都被她這股利落勁兒壓下去了——不是張揚(yáng)的銳,
是沉在技術(shù)里的穩(wěn),像精準(zhǔn)咬合的齒輪,一下就卡進(jìn)了問(wèn)題的核心?!案愣??!笔昼妱傔^(guò),
黎清清敲下最后一個(gè)回車,屏幕上彈出密鑰庫(kù)的物理地址,附帶一串破解后的訪問(wèn)指令。
她側(cè)頭看墨云霄,
眼里還沾著屏幕的光:“你防火墻的底層交互日志得加個(gè)異常延遲監(jiān)測(cè)模塊,
這種時(shí)間差攻擊,以后可能還會(huì)有?!蹦葡鰶](méi)反駁。
他團(tuán)隊(duì)的防火墻向來(lái)以“防御密度”為傲,卻忽略了這種看似微小的時(shí)間差漏洞。
他合上筆記本,伸手遞回那份被他捏出折痕的報(bào)告:“謝了。墨云霄。
”這次是他先報(bào)了名字。黎清清接過(guò)報(bào)告,指尖又觸到他的指尖,還是那點(diǎn)微涼。
她勾了下唇角,不算笑,卻比剛才多了點(diǎn)溫度:“黎清清。”窗外的天暗了些,
會(huì)議室里的屏幕漸漸恢復(fù)正常,數(shù)據(jù)流重新變得規(guī)整。墨云霄看著黎清清收拾筆記本的背影,
忽然想起她剛遞報(bào)告時(shí)的樣子——沒(méi)有多余的寒暄,上來(lái)就直指問(wèn)題,像把開(kāi)刃的短刀,
快得讓人猝不及防,卻又準(zhǔn)得讓人無(wú)法忽視。散場(chǎng)時(shí)已是深夜,走廊里只剩他們兩人。
墨云霄遞過(guò)去一瓶水:“黎小姐,謝了?!薄澳壬姆阑饓?,給追蹤留了很好的觀測(cè)口。
”黎清清接了過(guò)來(lái),瓶身碰到指尖,她笑了笑,“不然我得多花半小時(shí)繞路。
”他知道她指的是什么——那處看似薄弱的接口,其實(shí)是他特意留的“觀測(cè)窗”,
方便快速定位異常流量,業(yè)內(nèi)沒(méi)幾個(gè)人能看出來(lái)。墨云霄挑眉:“下次有這種事,直接找我。
”“好。”黎清清應(yīng)得爽快,掏出手機(jī),晃了晃“加個(gè)聯(lián)系方式?”這一加,就成了常態(tài)。
黎清清盯著屏幕上跳動(dòng)的加密節(jié)點(diǎn),眉頭擰成個(gè)結(jié)。這單暗網(wǎng)追蹤的私活比她預(yù)想的棘手,
對(duì)方像藏在霧里的影子,她剛摸到點(diǎn)蹤跡,那邊就立刻換了加密路徑,反偵察手段刁鉆得很。
她指尖敲著桌面,腦子里過(guò)了圈能調(diào)用的防御資源,最后停在一個(gè)名字上——墨云霄。
沒(méi)多猶豫,她點(diǎn)開(kāi)和墨云霄的對(duì)話框,直接把整理好的需求文檔甩了過(guò)去。文檔里沒(méi)廢話,
IP池、可自動(dòng)生成虛假追蹤路徑的混淆模塊、以及能抵御七層滲透的底層防火墻適配方案。
發(fā)送成功的提示彈出時(shí),她瞥了眼時(shí)間,晚上十點(diǎn),估計(jì)他那邊也該收工了,
卻沒(méi)想著要不要加句“麻煩了”。此時(shí)墨云霄的團(tuán)隊(duì)正圍著新系統(tǒng)測(cè)試屏,
服務(wù)器指示燈綠得晃眼。他剛抬手揉了揉眉心,手機(jī)“嗡”地震了下。
點(diǎn)開(kāi)看是黎清清的消息,附件文檔加載出來(lái),他掃了兩眼,指尖在桌沿輕叩兩下。
“暫停手里的活?!彼鋈婚_(kāi)口,團(tuán)隊(duì)成員都愣了下。他把手機(jī)往測(cè)試臺(tái)上一放,
屏幕轉(zhuǎn)向眾人:“老張,你帶人拆我們新系統(tǒng)的動(dòng)態(tài)混淆模塊,改三層嵌套,
適配她要的追蹤工具;小李,調(diào)三十個(gè)海外節(jié)點(diǎn)搭臨時(shí)IP池,五分鐘內(nèi)出可用列表;王工,
防火墻底層接口開(kāi)放權(quán)限,按她文檔里的參數(shù)做適配?!币贿B串指令清晰利落,
沒(méi)人多問(wèn)為什么——上次峰會(huì)后,誰(shuí)都知道這位黎小姐是技術(shù)上的“硬茬”,
能讓墨總這么干脆調(diào)資源的,活兒肯定不一般。服務(wù)器機(jī)房的燈亮了整夜。
老張熬得滿眼紅血絲,手里捏著咖啡杯,看著屏幕上成功嵌套的混淆模塊彈窗,
長(zhǎng)舒口氣:“成了,墨總,三層動(dòng)態(tài)切換,每次跳轉(zhuǎn)都能自動(dòng)生成三套虛假路徑,
對(duì)方就算抓包,也得在假數(shù)據(jù)里繞半天?!蹦葡鼋舆^(guò)筆記本,
把改好的架構(gòu)模型壓縮包發(fā)過(guò)去,想了想,加了句附言:“加了三層動(dòng)態(tài)混淆,
對(duì)方抓不到你的追蹤痕跡。IP池和防火墻接口參數(shù)附在壓縮包里,直接導(dǎo)入能用。
”消息發(fā)出去沒(méi)兩秒,那邊回了條——“收到,完事請(qǐng)你吃火鍋”。墨云霄看著那行字,
指尖在屏幕上頓了頓,嘴角幾不可查地?fù)P了下。他把手機(jī)揣回口袋,
轉(zhuǎn)身拍了拍老張的肩:“收工,明天調(diào)休半天?!弊叩綑C(jī)房門口時(shí),
他又回頭看了眼屏幕上黎清清的頭像,是個(gè)簡(jiǎn)單的代碼符號(hào),倒真像她的風(fēng)格——有事說(shuō)事,
利落得很,卻又透著點(diǎn)不用客套的熟稔,好似有什么東西劃過(guò)了心房。
黎清清這邊收到壓縮包,導(dǎo)入工具測(cè)試了十分鐘。虛假路徑生成速度比她預(yù)期的**倍,
IP切換延遲控制在0.3秒內(nèi),防火墻適配后,模擬滲透的攻擊包全被攔截在第四層。
她滿意地關(guān)了測(cè)試界面,往椅背上一靠,想著等這單結(jié)了,
得找家辣鍋夠勁的店——欠的人情,一頓火鍋總得還清。黎清清敲下最后一個(gè)確認(rèn)指令,
屏幕上彈出“追蹤任務(wù)完成”的綠色提示框時(shí),窗外天剛蒙蒙亮。她揉了揉發(fā)麻的肩膀,
盯著桌面那堆喝空的咖啡罐笑了笑——這一兩個(gè)月以來(lái)她幾乎扎在代碼里,
連軸轉(zhuǎn)的日子總算到頭了。隨手拿起手機(jī)解鎖,翻出和墨云霄的聊天界面,
那句“完事請(qǐng)你吃火鍋”的消息,安安靜靜躺在對(duì)話框里。她指尖在屏幕上頓了頓,
點(diǎn)開(kāi)對(duì)話框,直接發(fā)了條消息:“單子結(jié)了,今晚有空?一起去南街那家老火鍋,我訂位子。
”沒(méi)等多久,墨云霄回了消息:“好,幾點(diǎn)?”“七點(diǎn),我提前去等你。”黎清清回完,
把手機(jī)扔回桌面,起身伸了個(gè)懶腰。那家火鍋店是上次峰會(huì)結(jié)束后聽(tīng)人提過(guò)的,
據(jù)說(shuō)牛油鍋辣得夠勁,正好配得上這陣子熬的夜——也配得上欠了這么久的人情。
傍晚六點(diǎn)半,黎清清換了件淺灰的連帽衫,提前到了火鍋店。她訂了個(gè)靠窗的卡座,
剛坐下沒(méi)多久,就看見(jiàn)墨云霄推門進(jìn)來(lái)。他穿了件紅色襯衣,黑色外套,
比上次在會(huì)議室里少了點(diǎn)緊繃,多了些松快?!暗群芫昧耍俊彼趯?duì)面坐下,
目光掃過(guò)桌上的菜單?!皠偟?。”黎清清把菜單推過(guò)去,“看看想吃什么,除了香菜,
我都能吃。”墨云霄低頭翻菜單,指尖在“毛肚”“黃喉”那欄頓了頓:“你愛(ài)吃辣?
”“還行,越辣越醒神?!崩枨迩逍α诵?,“上次那架構(gòu)幫了大忙,
對(duì)方到最后都沒(méi)摸到我追蹤的尾巴,光在虛假路徑里繞圈了?!薄澳隳嫦虻乃惴ú抨P(guān)鍵。
”墨云霄抬眼,語(yǔ)氣平淡,“我只是搭了個(gè)架子?!闭f(shuō)話間,服務(wù)員端著牛油鍋底過(guò)來(lái),
紅亮的辣油咕嘟咕嘟冒泡泡,香氣瞬間漫開(kāi)來(lái)。黎清清看著鍋里翻滾的辣椒,
忽然覺(jué)得這場(chǎng)景比會(huì)議室里對(duì)著屏幕要自在得多——沒(méi)有數(shù)據(jù)流,沒(méi)有緊急指令,
就只是兩個(gè)人坐在熱氣騰騰的火鍋前,說(shuō)幾句無(wú)關(guān)緊要的話?!皩?duì)了,
”她夾了片毛肚放進(jìn)鍋里,“你們新系統(tǒng)測(cè)試完了?上次臨時(shí)調(diào)人,沒(méi)耽誤進(jìn)度吧?”“沒(méi),
第二天補(bǔ)回來(lái)了?!蹦葡鲣讨蛉?,“倒是你,這單結(jié)束,接下來(lái)歇幾天?”“多歇兩天,
然后再接個(gè)新的?!崩枨迩逡Я丝诿?,辣得舌尖發(fā)麻,卻眼睛發(fā)亮,
“不過(guò)下次再要借你的架構(gòu),可能得請(qǐng)兩頓火鍋了。”墨云霄看著她被辣得微紅的鼻尖,
嘴角彎了彎:“沒(méi)問(wèn)題,隨時(shí)。”窗外的夜色慢慢沉下來(lái),火鍋店的暖光落在兩人身上,
鍋里的辣油還在咕嘟響。黎清清忽然覺(jué)得,這頓遲了一兩個(gè)月的火鍋,
好像比她預(yù)想的要熱乎得多。這天,墨云霄的團(tuán)隊(duì)進(jìn)駐金融機(jī)構(gòu)總部大樓時(shí),
整層技術(shù)部都架起了臨時(shí)服務(wù)器。這次要搭的安全體系涉及核心資金數(shù)據(jù),
甲方要求“模擬最極端攻擊場(chǎng)景”——不是走流程式的滲透測(cè)試,
是要真刀真槍把防御團(tuán)隊(duì)逼到極限,才能驗(yàn)證體系的抗壓性。
技術(shù)總監(jiān)老張盯著防御架構(gòu)圖揉太陽(yáng)穴,無(wú)奈的說(shuō)道:“墨總,常規(guī)攻擊路徑我們測(cè)了三遍,
可總覺(jué)得缺了點(diǎn)‘意外’——得有個(gè)能跳出常規(guī)邏輯的人來(lái)攻,才能試出死角。
”墨云霄指尖敲著桌面沒(méi)說(shuō)話,視線落在手機(jī)里那個(gè)熟悉的代碼頭像上。思考片刻后,
他發(fā)了條消息:“有空嗎?幫個(gè)忙?!崩枨迩鍘е龍F(tuán)隊(duì)的三個(gè)人出現(xiàn)在墨云霄面前時(shí),
手里還拎著筆記本電腦包,風(fēng)把她額前的碎發(fā)吹起來(lái)。沒(méi)有多余的寒暄“攻擊方還是防守方?
”她走到墨云霄面前,開(kāi)門見(jiàn)山?!肮舴??!蹦葡鰝?cè)身讓她進(jìn),
“目標(biāo)是他們剛搭的核心數(shù)據(jù)庫(kù)防火墻,你隨便攻,不用留手?!崩枨迩逄裘迹骸靶校?/p>
不過(guò)輸了可別賴我。”測(cè)試在封閉機(jī)房開(kāi)始。墨云霄的團(tuán)隊(duì)守在防御端,
屏幕上防御節(jié)點(diǎn)的指示燈一排排亮著;黎清清帶著人坐在對(duì)面,她手指在鍵盤上敲得飛快,
先讓團(tuán)隊(duì)成員放出二十組偽裝成用戶請(qǐng)求的試探包,像撒網(wǎng)似的探防御邊界。
“第一層防火墻用了行為基線檢測(cè),常規(guī)漏洞掃描沒(méi)用?!眻F(tuán)隊(duì)里的年輕人小聲說(shuō)道。
黎清清沒(méi)抬頭,指尖調(diào)出一串加密指令:“繞開(kāi)基線,用時(shí)間戳碰撞。
他們的防御日志每30秒同步一次,就在同步間隙發(fā)攻擊包?!敝噶畎l(fā)出沒(méi)半分鐘,
墨云霄那邊的防御警報(bào)就響了——雖然很快被攔截,
但屏幕上的防御響應(yīng)時(shí)間顯示“0.7秒”,比預(yù)設(shè)的“0.5秒內(nèi)攔截”慢了半拍。
老張額頭冒了汗,張了張嘴,低聲說(shuō)道:“他們居然摸到同步間隙了!”墨云霄盯著屏幕,
思考片刻,指尖在防御策略面板上調(diào)整參數(shù):“加設(shè)動(dòng)態(tài)同步觸發(fā)機(jī)制,
把間隙壓縮到10秒。”機(jī)房里只剩鍵盤敲擊聲和服務(wù)器的低鳴。
黎清清團(tuán)隊(duì)變換了攻擊路徑,
開(kāi)始嘗試逆向破解防火墻的訪問(wèn)密鑰;墨云霄這邊則跟著調(diào)整防御策略,
補(bǔ)漏洞、換加密算法,像在跟對(duì)方下一盤實(shí)時(shí)博弈的棋,你來(lái)我往。到后半夜,
黎清清忽然停了手,抬頭看向墨云霄,
指著屏幕上一串代碼對(duì)墨云霄說(shuō)道:“你這層防御用了分布式節(jié)點(diǎn),
但是節(jié)點(diǎn)間的通訊協(xié)議有個(gè)冗余字段——我剛用虛假節(jié)點(diǎn)發(fā)了個(gè)攜帶惡意代碼的同步請(qǐng)求,
現(xiàn)在應(yīng)該已經(jīng)進(jìn)你們內(nèi)網(wǎng)了?!甭勓阅葡隽⒖陶{(diào)內(nèi)網(wǎng)日志,
果然在某個(gè)節(jié)點(diǎn)的交互記錄里發(fā)現(xiàn)了異常代碼。他抬眼看向黎清清,眼里沒(méi)了平時(shí)的冷靜,
多了點(diǎn)意外的光亮和驚喜:“你是怎么發(fā)現(xiàn)的?”“猜的。”黎清清往后靠在椅背上,
輕輕挑眉放松自己,嘴角勾了下輕笑道,“分布式節(jié)點(diǎn)為了兼容舊設(shè)備,通常會(huì)留冗余字段,
這是常規(guī)操作,也是常規(guī)漏洞?!睓C(jī)房的燈照在她的臉上,眼下有淡淡的青黑,卻沒(méi)顯疲態(tài)。
墨云霄看著她團(tuán)隊(duì)成員正在收拾電腦,忽然開(kāi)口說(shuō)道:“今晚住這兒?樓下有休息室。
”“不了,回去補(bǔ)覺(jué)?!崩枨迩逭酒鹕?,把電腦包甩到肩上,“防御體系還行,
就那個(gè)冗余字段得趕緊改,真被黑進(jìn)去,可就不是測(cè)試這么簡(jiǎn)單了?!弊叩介T口時(shí),
她回頭看了眼還盯著屏幕的墨云霄,補(bǔ)了句:“下次再要測(cè)試攻擊,
還找我——比你請(qǐng)的那些第三方團(tuán)隊(duì)靠譜?!遍T關(guān)上的瞬間,老張湊過(guò)來(lái):“墨總,
這黎小姐……是真厲害啊。”墨云霄沒(méi)說(shuō)話,指尖在剛才發(fā)現(xiàn)異常代碼的地方敲了敲,
嘴角卻悄悄揚(yáng)了下。墨云霄握著方向盤的手指無(wú)意識(shí)摩挲著真皮紋路,
車窗外那扇亮著的窗像塊暖烘烘的小太陽(yáng),把他剛跟甲方周旋完的疲憊都烘得軟了些。
結(jié)束了任務(wù),開(kāi)著車回家的墨云霄不知不覺(jué)把車開(kāi)到了黎清清家樓下,停好車,坐在車?yán)铮?/p>
他點(diǎn)開(kāi)和黎清清的聊天框,輸入框里敲了句“系統(tǒng)修好了,謝了”,又覺(jué)得太干,
刪了重輸“剛路過(guò)你家樓下,燈還亮著,還沒(méi)睡?”,
指尖懸在發(fā)送鍵上頓了頓——萬(wàn)一她在忙呢?萬(wàn)一她只是忘了關(guān)燈?