第50章 程序
雨天,傾盆大雨,很久都沒這麼下過了。
田蕊拿著一封舉報信出去了。
季潔看著不解的張揚,解釋說:「前幾天的案子,從下面轉過來的。有個老人死了,墜電梯摔死的。昨天門口收到一封舉報信,說電梯運行程序被人做了手腳,不是故障,是謀殺。田蕊拿著信去找舉報人問問情況。」
張揚坐在工位上,重複了一句:「運行程序?」
季潔看向他:「哦對了,你電腦技術不錯,從技術角度分析分析,能在電梯運行程序上動手腳嗎?」
張揚想了想,說:「這得看怎麼動了。要是只控制開門關門,或者在某個時間段把所有的電梯都關了,單留一部開著,這不算難。」
深藍在腦海中出聲。
【正在分析電梯控制系統漏洞。】
【目標型號:OTIS Elevonic 411,主控板基於Intel 80186處理器,運行iRMX實時作業系統。當年這類電梯控制櫃的串行接口通常沒有加密驗證,只要能物理接觸到控制櫃的RS-232維護埠,或者通過樓宇自控系統BAS的共享總線進入,就能直接發送調度指令。缺點是會留下日誌,但那個年代很多物業根本不會去查,更別提備份。還有一種方式,如果電梯的樓層呼叫信號走的是CAN總線,在總線上掛一個節點模擬樓層按鈕信號,也能騙過主控。】
【結論:2003年這個時間節點,技術上是可行的。】
季潔又問:「你能查出來嗎?」
張揚點頭:「去看電腦日誌就行。這年頭很多人都不看日誌的,我們查一下就能知道是什麼時候開啟的程序,也就能確定案發的準確時間。如果確實是謀殺,我們需要一份搜查令。」
正說著,田蕊回來了,氣呼呼地把舉報信往桌上一拍,說:「季姐,本故事純屬虛構!」
季潔看著她那樣,忍不住說:「我說你是飛回來的呀?我給你掐表算了算,你跟那位電腦迷的對話最多沒超過五分鐘。」
田蕊灌了口水,緩過氣來才說:「我倒是想問仔細點兒,可他那態度……根本沒法聊。」
季潔拿起包站起來:「跟我走吧。張揚你也去,咱們驗證一下想法。」
張揚應了一聲:「好。」
田蕊還在座位上嘟囔:「還去啊?誰會殺一個沒權、沒錢、沒色、老眼昏花、牙都掉光了的退休老頭兒?」
季潔頭也不回,指了指樓上:「你要是不想去,瞧見沒有?上樓拐彎,周支隊辦公室在那邊。」
田蕊沒話說了,抓起包跟了上去。
三人開車到了那個小區,找到物業的人,對方一見又是警察,臉上寫滿了不情願:「哎,這公安局不都定了是意外死亡嗎?怎麼還查啊?」
季潔沒接他的話,反問:「你們一年收人家多少物業費?」
物業那人被噎了一下,訕訕地說:「13號塔樓的電梯一直運轉不正常,也不是什麼大毛病,誰知道那天出這麼大的事兒。」
田蕊在旁邊說:「你自己要是住13號樓,是不是就能馬上想起來了?」
物業人員辯解道:「我們報修是晚了點兒,可電梯公司遲遲不來人,耽擱了好幾天,我們在這期間也做了防範措施的。」
季潔問:「什麼措施?」
物業那人趕緊說:「我們在每一層的電梯口都貼了條子,還各個樓層都通知到位了,誰能想到還是出了這種事。」
一行人走到電梯口,季潔注意到門上確實貼著紙條,寫著:請您在進入電梯之前確認轎廂位置。
就在這時電梯門忽然開了,裡面走出來一個很漂亮的女人,物業工作人員一見她就堆上笑臉:「小廖出去啊?你的車位可給你定好了啊,88號。」
小廖只是淡淡點了點頭,什麼也沒說,徑直走了。
物業那人尷尬地嘟囔了一句:「哎,你怎麼不謝謝我啊。」
電梯門還開著,季潔先走進去勘查,張揚沒跟進去,扭頭問那個物業人員:「我想去你們物業辦公室看看,電梯的運行程序是在辦公室的電腦里控制嗎?」
物業那人撓撓頭:「這個……我也不太懂,不過好像是在那邊。」
到了物業辦公室,角落裡擱著一台老舊的台式機,灰白色機箱,配的是那種大屁股CRT顯示器。張揚坐下時椅子嘎吱響了一聲,他沒在意,先掃了一眼桌面,Windows 2000的系統,圖標排得亂七八糟,右下角任務欄掛著一個電梯監控軟體的圖標,名字叫「OTIS Elevonic Supervision」,版本號1.2.3。
張揚先點開軟體界面看了下,主窗口顯示小區六部電梯的運行狀態,其中13號樓那部標著紅色「鎖定維護」。他按了Alt+Tab切出去打開命令行,先ping了一下電梯控制櫃的IP——192.168.1.41,通了。
「深藍,幫我看看。」
深藍的聲音在腦海里響了一聲。張揚手指飛快敲鍵盤,先調出系統進程列表,找到電梯監控軟體的進程名「OTISsv.exe」,然後打開一個十六進位編輯器,開始查看這個程序調用的動態連結庫。深藍在後台同步掃描,大概三分鐘後,分析結果出來了。
【該軟體的電梯鎖定/解鎖指令通過TCP埠4001發送,協議未加密,指令格式為「LOCK [電梯編號][時長]」和「UNLOCK [電梯編號]」。更關鍵的是,程序登錄管理後台的密碼驗證是本地完成的——密碼哈希值明文寫在安裝目錄下的config.ini里。】
張揚點進安裝目錄,C:\Program Files\OTIS\Supervision,果然有個config.ini。用記事本打開,翻到[Admin]那一欄,password後面是一串十六進位字符。他從兜里掏出一個128兆的U盤,拷了個自己寫的哈希破解小工具進去,跑了不到三十秒,密碼就出來了:admin123。
「這也太不走心了。」張揚嘟囔一句,用這個密碼登進了管理後台。
後台界面很簡陋,白底黑字,左邊菜單欄,右邊操作日誌。張揚沒急著看日誌,先在菜單里找到「電梯狀態控制」這一欄,點進去一看,13號樓的鎖定指令確實掛著,但來源IP不是這台物業電腦,而是192.168.1.200,一個不在物業辦公室區域網內的地址。
「有人從外部進來了。」
張揚手指沒停,切回命令行開始寫Python腳本。那是Python 2.3的年代,他用的還是IDLE編輯器,代碼一行一行往外蹦。腳本跑完,六部電梯裡只有13號樓那部處於鎖定狀態,其餘全部正常。他把腳本關掉,又翻出系統日誌,那個年代的日誌功能雖然簡陋,但該有的都有:時間戳、操作類型、來源IP、執行結果。他按Ctrl+F搜索案發當天的日期,屏幕一行一行往下走。
從凌晨零點開始,日誌里都是正常的定時巡檢指令,每十五分鐘一次,來源IP全是本機127.0.0.1。張揚繼續往下拉,眉頭微微動了一下,凌晨零點十七分,出現了第一條異常記錄,來源IP正是192.168.1.200,操作類型是「LOGIN」。
有人登錄進來了。
接著是一條「QUERY 13-1 STATUS」,查詢13號樓1單元電梯狀態。然後是一串配置指令,張揚一條條看過去,嘴裡念著:「先查狀態,然後改了定時參數……設置的是凌晨一點整觸發,鎖定13號樓某一層。」他手指在屏幕上點了點,「定時裝置。」
再往後翻,凌晨一點零二分,同一個IP又發來指令,把定時任務刪除了,然後註銷登錄。前後操作時間不到二十分鐘,乾淨利落。
張揚站起來,把屏幕轉向季潔那邊:「季姐,申請查案吧。案發當天夜裡十二點十七分,有一個陌生ID遠程登錄進了電梯控制系統,先查了13號樓電梯的狀態,然後用定時裝置設定凌晨一點整鎖定某一層電梯門。操作完還把定時任務刪了,要不是日誌里留了記錄,根本看不出來。」
季潔彎腰看屏幕,日誌記錄一條一條清清楚楚,時間、IP、操作內容全都在上面。她直起身子,語氣變了:「這個IP能追嗎?」
張揚重新坐下,在命令行里輸了個命令查192.168.1.200的MAC地址,說:「能追。這個IP不在物業的固定分配表里,說明有人臨時接入了小區區域網。我調一下交換機日誌,應該能查到這個MAC地址對應哪個網口、哪棟樓。」
他又敲了幾行命令,屏幕上的數據一行行往下跳。物業那人站旁邊看得一愣一愣的,完全沒想到這台老爺電腦還能翻出這麼多東西。
很快位置查出來了,張揚說:「是外部接入的網絡。」轉頭問物業人員,「你們樓里是不是有網線外接的口?」
物業人員搖頭:「我不知道啊,不過十二樓有個電信的箱子。」
張揚看向季潔:「季姐,應該就是那個箱子。他帶了筆記本過去,接上網線設置定時裝置,作案結束以後再回去把程序刪乾淨。」
季潔當機立斷:「回隊裡。」
回到隊裡後,看著老賀高興地坐在那裡。
張揚問道:「老賀,怎麼了這麼開心?」
老賀笑嘻嘻地說道:「楊震他們早上接的案子,剛才就有人投案自首了。」
張揚也笑著說道:「楊哥他們運氣不錯,這麼快就破案了。」
「那是啊。」
田蕊拿著一封舉報信出去了。
季潔看著不解的張揚,解釋說:「前幾天的案子,從下面轉過來的。有個老人死了,墜電梯摔死的。昨天門口收到一封舉報信,說電梯運行程序被人做了手腳,不是故障,是謀殺。田蕊拿著信去找舉報人問問情況。」
張揚坐在工位上,重複了一句:「運行程序?」
季潔看向他:「哦對了,你電腦技術不錯,從技術角度分析分析,能在電梯運行程序上動手腳嗎?」
張揚想了想,說:「這得看怎麼動了。要是只控制開門關門,或者在某個時間段把所有的電梯都關了,單留一部開著,這不算難。」
深藍在腦海中出聲。
【正在分析電梯控制系統漏洞。】
【目標型號:OTIS Elevonic 411,主控板基於Intel 80186處理器,運行iRMX實時作業系統。當年這類電梯控制櫃的串行接口通常沒有加密驗證,只要能物理接觸到控制櫃的RS-232維護埠,或者通過樓宇自控系統BAS的共享總線進入,就能直接發送調度指令。缺點是會留下日誌,但那個年代很多物業根本不會去查,更別提備份。還有一種方式,如果電梯的樓層呼叫信號走的是CAN總線,在總線上掛一個節點模擬樓層按鈕信號,也能騙過主控。】
【結論:2003年這個時間節點,技術上是可行的。】
季潔又問:「你能查出來嗎?」
張揚點頭:「去看電腦日誌就行。這年頭很多人都不看日誌的,我們查一下就能知道是什麼時候開啟的程序,也就能確定案發的準確時間。如果確實是謀殺,我們需要一份搜查令。」
正說著,田蕊回來了,氣呼呼地把舉報信往桌上一拍,說:「季姐,本故事純屬虛構!」
季潔看著她那樣,忍不住說:「我說你是飛回來的呀?我給你掐表算了算,你跟那位電腦迷的對話最多沒超過五分鐘。」
田蕊灌了口水,緩過氣來才說:「我倒是想問仔細點兒,可他那態度……根本沒法聊。」
季潔拿起包站起來:「跟我走吧。張揚你也去,咱們驗證一下想法。」
張揚應了一聲:「好。」
田蕊還在座位上嘟囔:「還去啊?誰會殺一個沒權、沒錢、沒色、老眼昏花、牙都掉光了的退休老頭兒?」
季潔頭也不回,指了指樓上:「你要是不想去,瞧見沒有?上樓拐彎,周支隊辦公室在那邊。」
田蕊沒話說了,抓起包跟了上去。
三人開車到了那個小區,找到物業的人,對方一見又是警察,臉上寫滿了不情願:「哎,這公安局不都定了是意外死亡嗎?怎麼還查啊?」
季潔沒接他的話,反問:「你們一年收人家多少物業費?」
物業那人被噎了一下,訕訕地說:「13號塔樓的電梯一直運轉不正常,也不是什麼大毛病,誰知道那天出這麼大的事兒。」
田蕊在旁邊說:「你自己要是住13號樓,是不是就能馬上想起來了?」
物業人員辯解道:「我們報修是晚了點兒,可電梯公司遲遲不來人,耽擱了好幾天,我們在這期間也做了防範措施的。」
季潔問:「什麼措施?」
物業那人趕緊說:「我們在每一層的電梯口都貼了條子,還各個樓層都通知到位了,誰能想到還是出了這種事。」
一行人走到電梯口,季潔注意到門上確實貼著紙條,寫著:請您在進入電梯之前確認轎廂位置。
就在這時電梯門忽然開了,裡面走出來一個很漂亮的女人,物業工作人員一見她就堆上笑臉:「小廖出去啊?你的車位可給你定好了啊,88號。」
小廖只是淡淡點了點頭,什麼也沒說,徑直走了。
物業那人尷尬地嘟囔了一句:「哎,你怎麼不謝謝我啊。」
電梯門還開著,季潔先走進去勘查,張揚沒跟進去,扭頭問那個物業人員:「我想去你們物業辦公室看看,電梯的運行程序是在辦公室的電腦里控制嗎?」
物業那人撓撓頭:「這個……我也不太懂,不過好像是在那邊。」
到了物業辦公室,角落裡擱著一台老舊的台式機,灰白色機箱,配的是那種大屁股CRT顯示器。張揚坐下時椅子嘎吱響了一聲,他沒在意,先掃了一眼桌面,Windows 2000的系統,圖標排得亂七八糟,右下角任務欄掛著一個電梯監控軟體的圖標,名字叫「OTIS Elevonic Supervision」,版本號1.2.3。
張揚先點開軟體界面看了下,主窗口顯示小區六部電梯的運行狀態,其中13號樓那部標著紅色「鎖定維護」。他按了Alt+Tab切出去打開命令行,先ping了一下電梯控制櫃的IP——192.168.1.41,通了。
「深藍,幫我看看。」
深藍的聲音在腦海里響了一聲。張揚手指飛快敲鍵盤,先調出系統進程列表,找到電梯監控軟體的進程名「OTISsv.exe」,然後打開一個十六進位編輯器,開始查看這個程序調用的動態連結庫。深藍在後台同步掃描,大概三分鐘後,分析結果出來了。
【該軟體的電梯鎖定/解鎖指令通過TCP埠4001發送,協議未加密,指令格式為「LOCK [電梯編號][時長]」和「UNLOCK [電梯編號]」。更關鍵的是,程序登錄管理後台的密碼驗證是本地完成的——密碼哈希值明文寫在安裝目錄下的config.ini里。】
張揚點進安裝目錄,C:\Program Files\OTIS\Supervision,果然有個config.ini。用記事本打開,翻到[Admin]那一欄,password後面是一串十六進位字符。他從兜里掏出一個128兆的U盤,拷了個自己寫的哈希破解小工具進去,跑了不到三十秒,密碼就出來了:admin123。
「這也太不走心了。」張揚嘟囔一句,用這個密碼登進了管理後台。
後台界面很簡陋,白底黑字,左邊菜單欄,右邊操作日誌。張揚沒急著看日誌,先在菜單里找到「電梯狀態控制」這一欄,點進去一看,13號樓的鎖定指令確實掛著,但來源IP不是這台物業電腦,而是192.168.1.200,一個不在物業辦公室區域網內的地址。
「有人從外部進來了。」
張揚手指沒停,切回命令行開始寫Python腳本。那是Python 2.3的年代,他用的還是IDLE編輯器,代碼一行一行往外蹦。腳本跑完,六部電梯裡只有13號樓那部處於鎖定狀態,其餘全部正常。他把腳本關掉,又翻出系統日誌,那個年代的日誌功能雖然簡陋,但該有的都有:時間戳、操作類型、來源IP、執行結果。他按Ctrl+F搜索案發當天的日期,屏幕一行一行往下走。
從凌晨零點開始,日誌里都是正常的定時巡檢指令,每十五分鐘一次,來源IP全是本機127.0.0.1。張揚繼續往下拉,眉頭微微動了一下,凌晨零點十七分,出現了第一條異常記錄,來源IP正是192.168.1.200,操作類型是「LOGIN」。
有人登錄進來了。
接著是一條「QUERY 13-1 STATUS」,查詢13號樓1單元電梯狀態。然後是一串配置指令,張揚一條條看過去,嘴裡念著:「先查狀態,然後改了定時參數……設置的是凌晨一點整觸發,鎖定13號樓某一層。」他手指在屏幕上點了點,「定時裝置。」
再往後翻,凌晨一點零二分,同一個IP又發來指令,把定時任務刪除了,然後註銷登錄。前後操作時間不到二十分鐘,乾淨利落。
張揚站起來,把屏幕轉向季潔那邊:「季姐,申請查案吧。案發當天夜裡十二點十七分,有一個陌生ID遠程登錄進了電梯控制系統,先查了13號樓電梯的狀態,然後用定時裝置設定凌晨一點整鎖定某一層電梯門。操作完還把定時任務刪了,要不是日誌里留了記錄,根本看不出來。」
季潔彎腰看屏幕,日誌記錄一條一條清清楚楚,時間、IP、操作內容全都在上面。她直起身子,語氣變了:「這個IP能追嗎?」
張揚重新坐下,在命令行里輸了個命令查192.168.1.200的MAC地址,說:「能追。這個IP不在物業的固定分配表里,說明有人臨時接入了小區區域網。我調一下交換機日誌,應該能查到這個MAC地址對應哪個網口、哪棟樓。」
他又敲了幾行命令,屏幕上的數據一行行往下跳。物業那人站旁邊看得一愣一愣的,完全沒想到這台老爺電腦還能翻出這麼多東西。
很快位置查出來了,張揚說:「是外部接入的網絡。」轉頭問物業人員,「你們樓里是不是有網線外接的口?」
物業人員搖頭:「我不知道啊,不過十二樓有個電信的箱子。」
張揚看向季潔:「季姐,應該就是那個箱子。他帶了筆記本過去,接上網線設置定時裝置,作案結束以後再回去把程序刪乾淨。」
季潔當機立斷:「回隊裡。」
回到隊裡後,看著老賀高興地坐在那裡。
張揚問道:「老賀,怎麼了這麼開心?」
老賀笑嘻嘻地說道:「楊震他們早上接的案子,剛才就有人投案自首了。」
張揚也笑著說道:「楊哥他們運氣不錯,這麼快就破案了。」
「那是啊。」