第019章 連鎖隱患
第九月的夜裡有點涼。園區路燈下的法桐葉子還沒落,只是顏色淡了半檔。凌晨一點過,運維樓三層只剩一格燈亮著。中央空調換風機的聲音被聽成了背景的一部分,均勻、低頻,幾乎可以忽略。鍵盤右下角留著掌根壓出的一片溫熱。林默做完當天最後一輪巡檢收尾,照例在關機前把監控大屏整體掃一遍——這個習慣養成於那年算不清來路的間歇掉線,如今加固成了每晚的最後一道工序。
大屏上的綠,比過去任何一個季節都安分。政務雲一期運行平穩,二期邀標材料在下周齊套,市里各條線的駐場單位輪流提交的巡檢報表一頁頁滾過去,沒有一個紅字。王海濤的周報最近也是乾的——只有流水,沒有刺。整棟樓睡了半個月的好覺。
正是這份安分,讓他每晚都多看兩眼。前幾天他自己也給過解釋:可能真沒事了。銳科退場留下的空當,被幾家大廠穩穩接住,鏈條上所有的敵意暫時都沒有著落點。可是解釋歸解釋,掃描歸掃描,這兩件事在他的日程里從來不打折——程序性的事一旦打折,改回來就要付雙倍的價錢。
今晚這一遍掃下來,視線在大屏右上方停住了。故障視圖的角落裡,浮著七粒淺黃。顏色調得很低,如果不當場湊近看,很容易當成屏幕圖層疊出來的色差。他沒有立刻點開,先把室內頭頂的燈又關掉一路,讓面板的對比度自己抬上來——黃粒還是七粒,位置不動,亮度不閃。
七粒,散布在他職權範圍之外的幾個方向上。他調出全市政務系統的總體拓撲圖。這張圖平時鎖在網絡處的內部分區里,以他如今的牽頭上位與技術把關角色,讀權限上個月起就有了。灰底大圖順著顯示器鋪開:十幾個委辦局的節點密密麻麻,鏈路縱橫交錯。全市刷臉辦件的總閘在最東頭——人社的實名認證接口,日均承載數百萬次身份校驗;市場監管的登記回流偏西南一角,企業年報與執照變更全走那條通道;交通卡口的數據匯聚壓在城北環線上,實時車流與違章抓拍都朝那裡集中;郊縣的一座數據泵孤懸在外,負責氣象觀測資料的定時推送,平日無人問津,卻牽著一整條防汛預警鏈。
七粒淺黃,就綴在這四個方向的關節處。他把其中三粒展開,先看各自的單機曲線——每一台單獨拎出來都體面得很:延遲峰值多了十幾毫秒,離告警閾值隔著老遠,值班表上的人掃一眼只會寫下「網絡略有波動,已關注「六個字。單看,全都無罪。
天樞在這時開口。今晚它的頻率放得很低,沒有慣常的開場玩笑:【把七條曲線疊到同一個坐標系試試。】
林默把視角切換成分屏疊加。七條曲線落進同一個畫面里的一瞬間,那些單機上無關痛癢的小起伏,忽然有了共同的方向。都是出站方向的回包被拖慢。入站正常。節奏也對得上——卡的全是那幾個固定的業務時序,像對方熟讀過各委辦局的日曆,專挑數據吞吐的低谷窗口下手。起始時刻仍然在咬合:第一批抖動出現在三天前的凌晨兩點四十上下,其後兩夜,每小時段的分布進一步靠攏。一粒黃是波動,兩粒黃是巧合,七個方向的黃朝著同一個方位傾斜,就是工程。他把手邊的筆記本翻到空白頁,在這行結論下面畫了一道橫線。
【同步性成立。】天樞把時間軸拉長到七十二小時,【起點三天前。每天的強度比前一天高一檔,白晝自動回落。這不是哪台設備老化出來的樣子——是在有人校準什麼東西。】
「校準「兩個字,林默咀嚼了一下。它不是攻擊用語。攻擊講究結果,校準講究過程。有人正在一張橫跨全市的大網上反覆測量同一件事,並且每天根據測量結果修正力度。測量彈性的動作做到這個份上,距離真正出手,中間隔著的只是一個日期。
他沒有再往下想。當下的每一步推理都得留給證據,這是本月以來他用職位換來的紀律之一。第二天的周會上,會議室里的氣氛鬆快得近乎節日。
陳志遠把季度的運行報表攤在桌面正中,紙頁邊緣拍出一聲脆響:「各位看看這數據——告警量環比降了七成,工單平均響應提前兩個小時。咱們總算熬出頭了!「他環視一圈,臉上的圓潤線條全是舒展的,「這段日子大家可以緩緩,身體是本錢吶。「底下一陣附和的笑。幾位中層交換著眼神,彼此說了些「應該的「「領導帶隊有力「之類的場面話。
王海濤坐在斜對面靠牆的位置,全程沒有接茬。他低頭看著自己的筆記本,手裡的筆轉得飛快。這支筆轉起來的樣子,最近成了樓里少數幾個人心照不宣的信號——銳科退場之後,他失去了所有外放的鋒芒,只剩下這種攥在指縫裡的東西。轉動的速度和他臉上沒有表情的程度成正比。
沒有人知道他在等什麼。林默也不打算猜。會議議程過半,輪到林默匯報。他站起來,把二期準備工作的三條主線講完了,數字念得不快,每一條都對著報表上的原始欄位。講到風險預案時,他把北向網關壓測窗口錯峰的那一條略過了細節——那是給三期準備的,今天場合不到。
念完最後一個數,他說:「以上。「回到座位,翻開自己的筆記本。在上午記事的最下面一行,他順手畫了一個小小的方框,方框裡沒有寫字。那個空框,是給他此刻不便明說的東西留的位置——雷達上真正扎眼的那張全網校準圖,還沒到能放上這張桌子的時候。
散會人流往外涌。林默沒接陳志遠那句「緩緩「。
他起身收拾電腦,路過茶水間門口,瞥見走廊盡頭陳志遠的辦公室——門虛掩著一指寬的縫,裡面亮著燈。這位老闆剛在會上講完「身體是本錢「,轉頭又在午休時間裡對著銀行流水核第無數遍回款計劃。手機屏幕上開著計算器,指頭按得很慢。林默沒有敲門。
有些話必須等到手裡有完整的東西才說。空著手去向老闆匯報「我懷疑有人在測繪全市政務網「,換來的只能是兩個失眠的夜晚外加一場無從下手的高度戒備——高度戒備這件事在沒有證據支撐時本身就是消耗,會把全公司的精神都耗在一道稻草人的影子上。而他眼下真正缺的,恰恰是把影子變成實體的那幾天。
回到工位,他先調出拓撲圖,把最外側那粒淺黃節點悄悄加了一道訪問限速——順手的事,像給一扇沒上鎖的門先別了根棍。路過的同事探頭瞥見,停住:「林工,這節點……你怎麼知道要堵?「林默沒抬頭:「等證實了再說。「同事「哦「一聲走了。屏幕冷光里,周會上那點節慶似的鬆快,無聲無息挨了一下打臉。
接著他做了兩件事。
第一件,把昨晚那張拓撲截圖連同七條曲線的原始導出包,全部收進私人分區最深的那一層。目錄結構沿用此前定下的規矩:文件名只有日期與序號,沒有任何備註。這一層如今躺著四樣東西——境外編譯指紋、灰夾克的步態記錄、胸徽的拓樣,加上今天的這套曲線包。四樣東西彼此獨立,無一句話相連,可它們的密度都在同一個量級上。第二件事他做得更慢。打開一份新建文檔,標題敲的是《關於近期跨域流量異常模式的觀察簡報》。抬頭規範、措辭中性、附件列表預置了三格空位。他把已知的現象寫了兩頁,結論一欄只填了半句話:
「建議持續觀測至具備交叉驗證條件後再行研判。「
寫完,存檔,列印了一份紙質稿。他沒有把它發進OA,而是折起來放進辦公桌右側第二個抽屜,壓在那盒一次性口罩底下——那是他早年存競品情報用的老位置。這個位置的規矩他很清楚:什麼時候三個附件格里都有真貨了,什麼時候它就走正門出去。寧可晚上報三天,不能交上去一份空殼。
布防那天,走的全是明路。周二上午九點半,他在公司的變更管理系統里提交了一張單子:《政務雲二期前置·安全態勢感知專項(旁路鏡像部署)》。變更內容寫得規規整整:在市級匯聚層旁路鏡像埠接入態勢感知分析設備一台,僅採集複製流量,只讀模式,雙向不改包;作業時段凌晨兩點至四點;回退方案兩套;影響評估一頁。單子往下流轉的路徑是這樣的:公司側第一簽署人是他自己——技術把關牽頭,權限範圍內簽得起;隨後送到大數據局運維口的對接崗,再到網信辦的備案接口。整個鏈條上沒有任何一環需要他動用舊日的灰色技巧。周三傍晚批下來的紅頭意見一共八個字:「同意實施,注意脫敏。「
這與一年前那個周六凌晨的情形判若兩個時代。那時他在機房裡一個人干四個小時,幹完連張正經的工單都沒有;如今同樣的活兒,他只需要一份讓人挑不出毛病的前置文檔。規矩從來不是束縛——攢夠了信用,規矩就是通行證。周四凌晨兩點,實施窗開啟。
(由於緩存原因,請用戶直接瀏覽器訪問 看書首選 TW 看書網,𝖘𝖍𝖚.𝖙𝖜隨時享 網站,觀看最快的章節更新)
機房的溫度比外面低七八度。冷通道燈帶映在地磚上,風扇聲從頭頂兩側灌下來。他帶著設備進場,按變更單逐項操作:鏡像埠插纖,分析設備上架加電,配置導入,採集基線啟動。整套流程走了五十分鐘,比單子上承諾的窗口富餘了七十分鐘。技術上真正的用心不在安裝,而在兩個細節。
第一處是採樣節拍。常規態勢感知設備抓包是均勻頻率的,一分鐘幾百次,整齊劃一。這種整齊有個副作用:對面若有懂行的對手反向嗅探,一眼就能識別出「此處掛著一隻固定的眼睛「。林默把採集間隔改成了不規則序列——相鄰兩次採樣之間的間隔取自一組素數序列,再加進一個隨機抖動因子,每一檔間隔都在基準值上下浮動百分之十幾。落到對面的探測器上,這條採集軌跡不像任何一台標準設備的輸出,倒像一片雜亂的自然噪聲。眼睛存在,但眼睛沒有形狀。
第二處在誘餌。布防清單原本要在每個可疑節點上都配齊深度解析模塊。林默在最後一步做了減法:郊縣那座氣象數據泵旁邊的防線,他只配了一道粗篩。粗篩的位置做得不高不低,恰好是一套「預算有限的中型單位「會部署的水平——漏洞的形狀經過精心裁剪,看上去像是某個項目組上個月的一次版本疊代沒有跟上安全補丁所致。
這道口子留著做什麼,紙上沒寫。對方的針每次戳進來,戳到的阻力大小、選取的角度、回撤的速度,都會被外圍的鏡像層原樣記下。一次是噪聲,三次是模式,十次足夠畫出持針那隻手的全部習慣。被動挨打和主動餵招的區別就在這裡——他把自己擺在了一個可以控場學習的位置上。
收尾時窗外仍是黑的。設備櫃門合攏,鑰匙歸還,機房門禁的最後一次刷卡記錄停在三點二十一分。系統日誌里多了一條當晚的變更記錄,編號、執行人、批准文號一一在列,誰來看都乾淨。第二天早上,他給自己沖了兩杯咖啡。第一杯在工位上喝完,第二杯端著走向茶水間的時候,正好碰上行政小姑娘抱著一摞二期材料的複印件往裡走。兩個人側身讓了讓。她隨口聊了一句:「聽說咱們的變更好快,昨天網信那邊備案秒批。「
「他們也想早點把東西看得更清楚。「林默應了一句,笑了笑,替她扶住將要滑落的一頁紙。這句話沒有誇張。此次立項批得順暢,本身就說明了一件事:在更高的層面,有人也覺得這套系統的透明度不夠用了。
新布設的探針跑滿七十二小時後,第一個真正有分量的發現落了下來。那是周日深夜。林默照例在關機前掃屏,天樞直接把一份數據切片推到了視野前端——不是告警,是一條比對命中提示。
【七天裡,對面在回包間隙投放的東西被解析出來了。】它的語速慢了一檔,【零零碎碎,拼接條件苛刻,換了三套模型才拼圓。你看。】
畫面中央展開一段十六進位序列,旁邊並列著它的解碼結果。林默逐行讀下去,讀到第三行時坐直了。那不是一段完整的攻擊載荷。它被拆成了許多細小的片段,分別夾在不同委辦局節點的回包填充欄位里——每一段單獨拿出來都是無害的字節,長度不超過協議允許的padding上限,不觸發任何深度檢測規則。拼裝必須滿足三個條件:來自同一業務時隙、按特定的偏移排序、並在最後一個校驗欄位上對齊。也只有守在同一面鏡子後面日夜不停地看的分析程序,才有可能把這隻千片之獸重新攏出一個輪廓。
這些碎片指向一個源標識前綴。那個前綴不在本地政務雲的註冊名錄里,不在任何一份他經手過的供應商資產清單上。欄位編排的語法帶著一種陌生體系的習慣:分隔符位置、校驗位算法、轉義符的處理方式——都是另一套規範訓練出來的筆跡,被硬生生借進了本地協議的語境裡,像用陌生的方言在別人家的牆上寫字,筆畫對了,運筆的習慣卻是外面的。
更要緊的一樣東西藏在元數據底層。那一串碎片包的時間戳基準線,不一致。它參照的不是北京時間,而是一個偏移量為負六小時的時區基線。那一段時帶覆蓋的國家數目很多,任何單點的指認都是冤案。可這個偏移本身已經足夠說明立場:打從一開始,投針的手就沒打算讓對方看清自己的鐘掛在哪兒。
它甚至懶得偽裝。直接用一個域外的時區基線運行著整套試探邏輯——這也側面印證了一件事:到目前為止,它不認為這張網上有一雙有資格看穿它的眼睛。林默靠在椅背上,把這個判斷又過了一遍。
基線高,配合耐心好,探查周期長而不急躁。對比前幾輪打過交道的那撥對手——蹭熱度的、搶位子的、借刀殺人式的——眼前這位完全是另一個物種。前三類圖的都是在牌桌上贏一局;這一位的動作里找不到任何爭先的姿態,它不要牌桌上的勝負,它在攢自己的地圖。本地的一畝三分地,人家未必看得上。
他從椅子裡站起來,走到窗前站了一會兒。樓下園區的路上空無一人,保安亭的燈照常亮著,法桐的影子被路燈光從左側拉向右側,安靜地覆在第無數次被踩過的方磚上。這座城市的政務神經網此刻正在正常運行:明早八點,人社的認證接口將承接全市的第一波辦事高峰;交通卡口的數據流將在早高峰前夕進入預熱;氣象泵會在日出前後推送當日第一包觀測數據。所有這些尋常的運轉底下,此刻躺著一個外部來的、耐心極好的、正在繪製全圖的存在。
等待是唯一正確的策略。搶動先手毫無意義——在不知道對方繪製的是什麼地圖之前,任何倉促的封堵動作都可能反過來暴露己方的監測水平。他要做的只有一件事:繼續餵招,繼續記錄,直到那份《觀察簡報》的三個附件格里全部坐進實體的證據。回到座位,他把今天的新增發現打包、編號、入庫。
命名那一欄,手指停了半秒。按照這一層的既有慣例——日期加序號,沒有任何備註。他依著規矩輸入完畢,按下確認。列表刷新,第五條記錄在原有四條的下方排定座次,彼此之間依舊沒有一句話往來,可量的方向已經是同一個了。
四條舊帳,一筆新債。它們靜靜躺在雙層密鑰後面,等著某一個特定時刻的到來——屆時也許不需要他親手掀蓋,只要把它們按正確的時間順序擺到桌面上,就已是最重的證詞。
他合上分區界面,切回告警總覽。屏幕右上方那七粒淺黃仍在原地,亮度比昨夜又深了一階。明天,按既定計劃,氣象泵旁邊的粗篩防線上會出現第二次被動命中的記錄。
不催,不響。氣象泵旁邊的粗篩防線上,第二次被動命中的記錄明天就會自己浮上來——可真正的危機從來不在那根針,而在那支正不慌不忙、一筆一筆描著全圖的手。線和鉤,他都備好了……
大屏上的綠,比過去任何一個季節都安分。政務雲一期運行平穩,二期邀標材料在下周齊套,市里各條線的駐場單位輪流提交的巡檢報表一頁頁滾過去,沒有一個紅字。王海濤的周報最近也是乾的——只有流水,沒有刺。整棟樓睡了半個月的好覺。
正是這份安分,讓他每晚都多看兩眼。前幾天他自己也給過解釋:可能真沒事了。銳科退場留下的空當,被幾家大廠穩穩接住,鏈條上所有的敵意暫時都沒有著落點。可是解釋歸解釋,掃描歸掃描,這兩件事在他的日程里從來不打折——程序性的事一旦打折,改回來就要付雙倍的價錢。
今晚這一遍掃下來,視線在大屏右上方停住了。故障視圖的角落裡,浮著七粒淺黃。顏色調得很低,如果不當場湊近看,很容易當成屏幕圖層疊出來的色差。他沒有立刻點開,先把室內頭頂的燈又關掉一路,讓面板的對比度自己抬上來——黃粒還是七粒,位置不動,亮度不閃。
七粒,散布在他職權範圍之外的幾個方向上。他調出全市政務系統的總體拓撲圖。這張圖平時鎖在網絡處的內部分區里,以他如今的牽頭上位與技術把關角色,讀權限上個月起就有了。灰底大圖順著顯示器鋪開:十幾個委辦局的節點密密麻麻,鏈路縱橫交錯。全市刷臉辦件的總閘在最東頭——人社的實名認證接口,日均承載數百萬次身份校驗;市場監管的登記回流偏西南一角,企業年報與執照變更全走那條通道;交通卡口的數據匯聚壓在城北環線上,實時車流與違章抓拍都朝那裡集中;郊縣的一座數據泵孤懸在外,負責氣象觀測資料的定時推送,平日無人問津,卻牽著一整條防汛預警鏈。
七粒淺黃,就綴在這四個方向的關節處。他把其中三粒展開,先看各自的單機曲線——每一台單獨拎出來都體面得很:延遲峰值多了十幾毫秒,離告警閾值隔著老遠,值班表上的人掃一眼只會寫下「網絡略有波動,已關注「六個字。單看,全都無罪。
天樞在這時開口。今晚它的頻率放得很低,沒有慣常的開場玩笑:【把七條曲線疊到同一個坐標系試試。】
林默把視角切換成分屏疊加。七條曲線落進同一個畫面里的一瞬間,那些單機上無關痛癢的小起伏,忽然有了共同的方向。都是出站方向的回包被拖慢。入站正常。節奏也對得上——卡的全是那幾個固定的業務時序,像對方熟讀過各委辦局的日曆,專挑數據吞吐的低谷窗口下手。起始時刻仍然在咬合:第一批抖動出現在三天前的凌晨兩點四十上下,其後兩夜,每小時段的分布進一步靠攏。一粒黃是波動,兩粒黃是巧合,七個方向的黃朝著同一個方位傾斜,就是工程。他把手邊的筆記本翻到空白頁,在這行結論下面畫了一道橫線。
【同步性成立。】天樞把時間軸拉長到七十二小時,【起點三天前。每天的強度比前一天高一檔,白晝自動回落。這不是哪台設備老化出來的樣子——是在有人校準什麼東西。】
「校準「兩個字,林默咀嚼了一下。它不是攻擊用語。攻擊講究結果,校準講究過程。有人正在一張橫跨全市的大網上反覆測量同一件事,並且每天根據測量結果修正力度。測量彈性的動作做到這個份上,距離真正出手,中間隔著的只是一個日期。
他沒有再往下想。當下的每一步推理都得留給證據,這是本月以來他用職位換來的紀律之一。第二天的周會上,會議室里的氣氛鬆快得近乎節日。
陳志遠把季度的運行報表攤在桌面正中,紙頁邊緣拍出一聲脆響:「各位看看這數據——告警量環比降了七成,工單平均響應提前兩個小時。咱們總算熬出頭了!「他環視一圈,臉上的圓潤線條全是舒展的,「這段日子大家可以緩緩,身體是本錢吶。「底下一陣附和的笑。幾位中層交換著眼神,彼此說了些「應該的「「領導帶隊有力「之類的場面話。
王海濤坐在斜對面靠牆的位置,全程沒有接茬。他低頭看著自己的筆記本,手裡的筆轉得飛快。這支筆轉起來的樣子,最近成了樓里少數幾個人心照不宣的信號——銳科退場之後,他失去了所有外放的鋒芒,只剩下這種攥在指縫裡的東西。轉動的速度和他臉上沒有表情的程度成正比。
沒有人知道他在等什麼。林默也不打算猜。會議議程過半,輪到林默匯報。他站起來,把二期準備工作的三條主線講完了,數字念得不快,每一條都對著報表上的原始欄位。講到風險預案時,他把北向網關壓測窗口錯峰的那一條略過了細節——那是給三期準備的,今天場合不到。
念完最後一個數,他說:「以上。「回到座位,翻開自己的筆記本。在上午記事的最下面一行,他順手畫了一個小小的方框,方框裡沒有寫字。那個空框,是給他此刻不便明說的東西留的位置——雷達上真正扎眼的那張全網校準圖,還沒到能放上這張桌子的時候。
散會人流往外涌。林默沒接陳志遠那句「緩緩「。
他起身收拾電腦,路過茶水間門口,瞥見走廊盡頭陳志遠的辦公室——門虛掩著一指寬的縫,裡面亮著燈。這位老闆剛在會上講完「身體是本錢「,轉頭又在午休時間裡對著銀行流水核第無數遍回款計劃。手機屏幕上開著計算器,指頭按得很慢。林默沒有敲門。
有些話必須等到手裡有完整的東西才說。空著手去向老闆匯報「我懷疑有人在測繪全市政務網「,換來的只能是兩個失眠的夜晚外加一場無從下手的高度戒備——高度戒備這件事在沒有證據支撐時本身就是消耗,會把全公司的精神都耗在一道稻草人的影子上。而他眼下真正缺的,恰恰是把影子變成實體的那幾天。
回到工位,他先調出拓撲圖,把最外側那粒淺黃節點悄悄加了一道訪問限速——順手的事,像給一扇沒上鎖的門先別了根棍。路過的同事探頭瞥見,停住:「林工,這節點……你怎麼知道要堵?「林默沒抬頭:「等證實了再說。「同事「哦「一聲走了。屏幕冷光里,周會上那點節慶似的鬆快,無聲無息挨了一下打臉。
接著他做了兩件事。
第一件,把昨晚那張拓撲截圖連同七條曲線的原始導出包,全部收進私人分區最深的那一層。目錄結構沿用此前定下的規矩:文件名只有日期與序號,沒有任何備註。這一層如今躺著四樣東西——境外編譯指紋、灰夾克的步態記錄、胸徽的拓樣,加上今天的這套曲線包。四樣東西彼此獨立,無一句話相連,可它們的密度都在同一個量級上。第二件事他做得更慢。打開一份新建文檔,標題敲的是《關於近期跨域流量異常模式的觀察簡報》。抬頭規範、措辭中性、附件列表預置了三格空位。他把已知的現象寫了兩頁,結論一欄只填了半句話:
「建議持續觀測至具備交叉驗證條件後再行研判。「
寫完,存檔,列印了一份紙質稿。他沒有把它發進OA,而是折起來放進辦公桌右側第二個抽屜,壓在那盒一次性口罩底下——那是他早年存競品情報用的老位置。這個位置的規矩他很清楚:什麼時候三個附件格里都有真貨了,什麼時候它就走正門出去。寧可晚上報三天,不能交上去一份空殼。
布防那天,走的全是明路。周二上午九點半,他在公司的變更管理系統里提交了一張單子:《政務雲二期前置·安全態勢感知專項(旁路鏡像部署)》。變更內容寫得規規整整:在市級匯聚層旁路鏡像埠接入態勢感知分析設備一台,僅採集複製流量,只讀模式,雙向不改包;作業時段凌晨兩點至四點;回退方案兩套;影響評估一頁。單子往下流轉的路徑是這樣的:公司側第一簽署人是他自己——技術把關牽頭,權限範圍內簽得起;隨後送到大數據局運維口的對接崗,再到網信辦的備案接口。整個鏈條上沒有任何一環需要他動用舊日的灰色技巧。周三傍晚批下來的紅頭意見一共八個字:「同意實施,注意脫敏。「
這與一年前那個周六凌晨的情形判若兩個時代。那時他在機房裡一個人干四個小時,幹完連張正經的工單都沒有;如今同樣的活兒,他只需要一份讓人挑不出毛病的前置文檔。規矩從來不是束縛——攢夠了信用,規矩就是通行證。周四凌晨兩點,實施窗開啟。
(由於緩存原因,請用戶直接瀏覽器訪問 看書首選 TW 看書網,𝖘𝖍𝖚.𝖙𝖜隨時享 網站,觀看最快的章節更新)
機房的溫度比外面低七八度。冷通道燈帶映在地磚上,風扇聲從頭頂兩側灌下來。他帶著設備進場,按變更單逐項操作:鏡像埠插纖,分析設備上架加電,配置導入,採集基線啟動。整套流程走了五十分鐘,比單子上承諾的窗口富餘了七十分鐘。技術上真正的用心不在安裝,而在兩個細節。
第一處是採樣節拍。常規態勢感知設備抓包是均勻頻率的,一分鐘幾百次,整齊劃一。這種整齊有個副作用:對面若有懂行的對手反向嗅探,一眼就能識別出「此處掛著一隻固定的眼睛「。林默把採集間隔改成了不規則序列——相鄰兩次採樣之間的間隔取自一組素數序列,再加進一個隨機抖動因子,每一檔間隔都在基準值上下浮動百分之十幾。落到對面的探測器上,這條採集軌跡不像任何一台標準設備的輸出,倒像一片雜亂的自然噪聲。眼睛存在,但眼睛沒有形狀。
第二處在誘餌。布防清單原本要在每個可疑節點上都配齊深度解析模塊。林默在最後一步做了減法:郊縣那座氣象數據泵旁邊的防線,他只配了一道粗篩。粗篩的位置做得不高不低,恰好是一套「預算有限的中型單位「會部署的水平——漏洞的形狀經過精心裁剪,看上去像是某個項目組上個月的一次版本疊代沒有跟上安全補丁所致。
這道口子留著做什麼,紙上沒寫。對方的針每次戳進來,戳到的阻力大小、選取的角度、回撤的速度,都會被外圍的鏡像層原樣記下。一次是噪聲,三次是模式,十次足夠畫出持針那隻手的全部習慣。被動挨打和主動餵招的區別就在這裡——他把自己擺在了一個可以控場學習的位置上。
收尾時窗外仍是黑的。設備櫃門合攏,鑰匙歸還,機房門禁的最後一次刷卡記錄停在三點二十一分。系統日誌里多了一條當晚的變更記錄,編號、執行人、批准文號一一在列,誰來看都乾淨。第二天早上,他給自己沖了兩杯咖啡。第一杯在工位上喝完,第二杯端著走向茶水間的時候,正好碰上行政小姑娘抱著一摞二期材料的複印件往裡走。兩個人側身讓了讓。她隨口聊了一句:「聽說咱們的變更好快,昨天網信那邊備案秒批。「
「他們也想早點把東西看得更清楚。「林默應了一句,笑了笑,替她扶住將要滑落的一頁紙。這句話沒有誇張。此次立項批得順暢,本身就說明了一件事:在更高的層面,有人也覺得這套系統的透明度不夠用了。
新布設的探針跑滿七十二小時後,第一個真正有分量的發現落了下來。那是周日深夜。林默照例在關機前掃屏,天樞直接把一份數據切片推到了視野前端——不是告警,是一條比對命中提示。
【七天裡,對面在回包間隙投放的東西被解析出來了。】它的語速慢了一檔,【零零碎碎,拼接條件苛刻,換了三套模型才拼圓。你看。】
畫面中央展開一段十六進位序列,旁邊並列著它的解碼結果。林默逐行讀下去,讀到第三行時坐直了。那不是一段完整的攻擊載荷。它被拆成了許多細小的片段,分別夾在不同委辦局節點的回包填充欄位里——每一段單獨拿出來都是無害的字節,長度不超過協議允許的padding上限,不觸發任何深度檢測規則。拼裝必須滿足三個條件:來自同一業務時隙、按特定的偏移排序、並在最後一個校驗欄位上對齊。也只有守在同一面鏡子後面日夜不停地看的分析程序,才有可能把這隻千片之獸重新攏出一個輪廓。
這些碎片指向一個源標識前綴。那個前綴不在本地政務雲的註冊名錄里,不在任何一份他經手過的供應商資產清單上。欄位編排的語法帶著一種陌生體系的習慣:分隔符位置、校驗位算法、轉義符的處理方式——都是另一套規範訓練出來的筆跡,被硬生生借進了本地協議的語境裡,像用陌生的方言在別人家的牆上寫字,筆畫對了,運筆的習慣卻是外面的。
更要緊的一樣東西藏在元數據底層。那一串碎片包的時間戳基準線,不一致。它參照的不是北京時間,而是一個偏移量為負六小時的時區基線。那一段時帶覆蓋的國家數目很多,任何單點的指認都是冤案。可這個偏移本身已經足夠說明立場:打從一開始,投針的手就沒打算讓對方看清自己的鐘掛在哪兒。
它甚至懶得偽裝。直接用一個域外的時區基線運行著整套試探邏輯——這也側面印證了一件事:到目前為止,它不認為這張網上有一雙有資格看穿它的眼睛。林默靠在椅背上,把這個判斷又過了一遍。
基線高,配合耐心好,探查周期長而不急躁。對比前幾輪打過交道的那撥對手——蹭熱度的、搶位子的、借刀殺人式的——眼前這位完全是另一個物種。前三類圖的都是在牌桌上贏一局;這一位的動作里找不到任何爭先的姿態,它不要牌桌上的勝負,它在攢自己的地圖。本地的一畝三分地,人家未必看得上。
他從椅子裡站起來,走到窗前站了一會兒。樓下園區的路上空無一人,保安亭的燈照常亮著,法桐的影子被路燈光從左側拉向右側,安靜地覆在第無數次被踩過的方磚上。這座城市的政務神經網此刻正在正常運行:明早八點,人社的認證接口將承接全市的第一波辦事高峰;交通卡口的數據流將在早高峰前夕進入預熱;氣象泵會在日出前後推送當日第一包觀測數據。所有這些尋常的運轉底下,此刻躺著一個外部來的、耐心極好的、正在繪製全圖的存在。
等待是唯一正確的策略。搶動先手毫無意義——在不知道對方繪製的是什麼地圖之前,任何倉促的封堵動作都可能反過來暴露己方的監測水平。他要做的只有一件事:繼續餵招,繼續記錄,直到那份《觀察簡報》的三個附件格里全部坐進實體的證據。回到座位,他把今天的新增發現打包、編號、入庫。
命名那一欄,手指停了半秒。按照這一層的既有慣例——日期加序號,沒有任何備註。他依著規矩輸入完畢,按下確認。列表刷新,第五條記錄在原有四條的下方排定座次,彼此之間依舊沒有一句話往來,可量的方向已經是同一個了。
四條舊帳,一筆新債。它們靜靜躺在雙層密鑰後面,等著某一個特定時刻的到來——屆時也許不需要他親手掀蓋,只要把它們按正確的時間順序擺到桌面上,就已是最重的證詞。
他合上分區界面,切回告警總覽。屏幕右上方那七粒淺黃仍在原地,亮度比昨夜又深了一階。明天,按既定計劃,氣象泵旁邊的粗篩防線上會出現第二次被動命中的記錄。
不催,不響。氣象泵旁邊的粗篩防線上,第二次被動命中的記錄明天就會自己浮上來——可真正的危機從來不在那根針,而在那支正不慌不忙、一筆一筆描著全圖的手。線和鉤,他都備好了……