訪談|Shota Shinogi : 如交戰般有趣和似行走般自然


[他多次在Black Hat會議上擔任講者,是出生在法國又在十歲回鄉的日本人,將編程視為至大樂趣的程序員,喜歡C++和 匯編語言但不會強加個人喜好的自由派,碰到困擾會先笑起來的紳士。本文主角,如果讓他自己用一個詞形容,大概是:正在前進的安全工程師]

一週後他將在美國Black Hat 2015大會上做演講,一天前他在日本家中測試程序的新功能。而現在他站在位於香港島灣仔的,香港會展中心的某一層,剛剛結束了自己在一場科技大會上的演講。

這是他第二次來到香港,上一次來是八年前,那時第一代iPhone才剛出現。本次成行原因是Web Summit——一個起源於都柏林的創業聚會——聯繫了他,希望他成為他們亞洲首場活動(RISE)中的講者。雖然這個安全工程師之前只在Black Hat大會和安全研究活動上發表過演說,從來沒有聽過這一創業圈的聚會,但聽說和科技相關,還是迅速同意了。

他決定像往常一樣講講自己開發的ShinoBot Suite。

什麼是ShinoBot Suite?

ShinoBOT Suite是一套包含文件傳輸和密碼截取等行為在內的,用於檢測安全產品性能的遠程攻擊模擬器。用比較淺顯的話講,既是通過模仿病毒來觀察防禦軟件的反應。

這個定義已經是他演講主題中最容易聽懂的部分,在他開始詳細介紹Shinobot.exe會採取的具體操作以及它和Shinobot.com間的信息交換時,大部分在場觀眾,那些更喜歡在融資數目和商業模式上鼓掌的人,都已經陷入了雲裡霧裡的狀態。

他自己也注意到了這種情況。大約兩小時後,他將在聊天時一邊笑着猜想到底有多少人聽懂了,一邊調出由隨行的侄子拍攝的現場照片,向對面的人一一指出觀眾裡前排兩三個看起來全部聽懂了的人,和後排一兩位甚至已經睡着了的先生。

他現在就在舞台邊等着那個對面的人,雖然按照之前的約定,那人在他演講結束前就應該在觀眾席裡等他了。

那人,很抱歉,就是在下我。

[如交戰般有趣]

活動開始前幾天,我在講者名單中注意到了Shota Shinogi以及他那個和場內其他演講相差甚遠的技術主題,於是發郵件希望談談此類技術話題在網路創業類聚會上的作用。

郵件在東京時間凌晨3點45分發出。3點48分,郵箱裡就出現了他的完整回覆,之後我們在半小時內確定了具體的時間安排。工作狂,大概是我對他的第一印象。

然而在我遲到了10分鐘出現在舞台邊時,這位工作狂只是很自然地結束了和觀眾的對話,笑着和我握了握手,又介紹了一起來的侄子。我們邊寒暄邊往回走,在人滿為患的media village找了兩個座位,正式談了起來。

首先當然是ShinoBOT Suite的更新。

(一) 新版本

他拿來我的本子,在上面畫下簡易的示範草圖。

[由於我們又在背面寫了很多字,原來的草圖可能看不清楚。左邊是筆者做的簡略說明圖]

ShinoBot的用戶,通常都是安全軟件業從業人員或互聯網公司裡維護系統的人。 在之前的版本裡,他們需要連接軟件和網站(Shinobot.com)進行操作。但這個網址並不被大型安全網站,比如知名安全產品公司McAfee的TrustedSource, 列為可信任的網址,所以時常被拉入黑名單。

[TrustedSource頁面上的ShinoBot]

因此,他開發了ShinoProxy作為中介,從軟件(ShinoBot.exe)到網站的信息交換將通過這個中介進行,從而避開黑名單的限制。這個新功能也將是他本次在Black Hat 2015上演講的重點之一。

在那之前,他正如很多攻擊類黑客常幹的那樣,通過加密包含網址的關鍵字元串(比如"shinobot.com"),以避開安全軟件的偵測。加密或者說字元串變換的方式有多種,他在官方網站上說明這點時舉了一個例子,是用Ascii代碼進行字母變換。

[Shota在網站上提供的加密方式的例子]

當然,未被列出的其他算法應該會比這種編程入門作業程度的加密手段複雜一點。至少複雜到如他所說,不易被小型防禦軟件破解的程度。

不過如你所見,這類掩藏關鍵代碼的手段只能應付一些基本的, 基於特徵來識別病毒的模式識別防禦(pattern recognition)。 他的最終目的是讓程序在電腦裡運作,測試安全軟件的行為檢測(behavior detection)功能。

不斷測試來比較不同的安全軟件,並思索應該怎麼調整,才是他一開始獨自開發這套工具的原因。

(二) 如交戰的攻防樂趣

“你有什麼愛好?”

Shota想了半天,猶猶豫豫地說:“看F1賽車”。他稍後又解釋,自己從來沒開過,喜歡看是因為賽場上有競爭,很有樂趣。

競爭的樂趣讓他邁入了安全行業。雖然這個行業看上去並不屬於會讓普通人,甚至普通程序員產生激情的地方。

在我直接提及一些程序員會覺得做安全比較無聊時,他做出了個“一山更比一山高”的手勢(用兩隻手不斷往上疊,把彼此壓下去):“在這個行業裡,你可以不斷想一個攻擊的方法,然後想怎麼防衛它,然後再想那怎麼調整攻擊,然後再...”。

解釋這個以矛攻盾的循環過程讓他笑了起來。也正是在循環的某一段裡,為了檢測市面上各家安全軟件在行為檢測上的性能,他開發了ShinoBot這個模擬攻擊工具。之後不斷根據模擬攻擊的結果以及用戶反饋調整ShinoBot,並再針對調整版研究防禦者應該如何優化防守。

他神采飛揚地比比畫畫,看起來僅從這一項裡就已得到莫大的滿足。

[似行走般自然]

的確是

我稍後問他除了看F1外,有沒有日常生活中的愛好,比如工作結束後做什麼,他毫不猶豫地回答:“編程(coding)”。實際上,在收到我郵件的那個凌晨,他也正默默在電腦前調試着ShinoBot。

但是編程不屬於工作嗎?他大笑起來,說自己總是在編程的,然後停下來,似乎想要想出個更能被常人稱為愛好的東西,但沒有成功。

我依照程序員的一般癖好提示,玩遊戲嗎? 他玩,但通常是那個業內人士基本都參與的CTF(Capture The Flag,網絡安全人員間進行的技術竟技比賽)。

[CTF起源於知名黑客聚會DEF CON,之後在全球各地都有大大小小的賽事。配圖來自DEF CON網站]

其他只有和策略分析有關的電腦遊戲,比如文明(全稱Sid Meier's Civilization,曾經風靡一時的戰略類遊戲 )。那麼世紀帝國(Age of Empires,和文明類似的戰略類遊戲)呢? 他也玩。於是我們聊了一會帝國各版本的不同,並傷感於沒有新作出現的事實。

既然喜歡策略類遊戲,那他或許也喜歡下棋? 這個問題突然又讓他笑了起來,他說自己以前喜歡下,但後來很少了,因為: “Coding is much more interesting than Chess”。

(四)少年Shota與紙上程式

如果要問他何時發現了程序的有趣之處,他大概會回答一開始。一開始,既是中學時。

出生在法國的Shota十歲才回日本,以法語為母語的他第一衝擊就來自日文在理解上的複雜度(他同時嚴肅強調漢字——日文中的Kanji——尤其難)。幸好有些東西是共通的,比如數學。

當時中學數學教材上附有一些介紹程序語言的資料,當然,由於不是正式內容,老師並不會在課上教授。然而中學生Shota卻被吸引,翻完了整本冊子,試着在紙上編程。

聽到這裡我想起了小學計算機組的老師。他經常以一種緬懷或是遺憾的語氣懷念自己當年在紙帶上打孔塞入機器來測試程序的日子(跟着怒斥我們太沉迷遊戲不珍惜光陰)。於是我問是Shota是否也是如此。

不是。他所謂的紙上程式,真的就是字面意義上的紙。

他在紙上寫下代碼,然後在腦海裡想像是否能運轉順利。 幸好,這種實在悲慘的日子沒有持續多久,不停打工的中學生Shota終於存夠了錢,在1997年買了部已經有四年壽命的二手電腦。

當時微軟已經推出了比較成熟的,面向個人的操作系統Windows 95。 可惜,買完電腦後的錢並不夠他買下系統軟件,於是只能從MS-DOS開始。 聽到這裡,我告訴他自己小學剛開始用計算機的時候也是DOS,我們再次互相感嘆一番,然後順勢轉入了下一個話題。

關於喜好的話題。

(五)似行走的編程

對程序員而言,尤其是那些對command line有偏執的極端正統程序員而言,MS-DOS和Linux之類的系統會好過Windows嗎?他馬上明白了我的意思,說不會。 因為那類圖象系統的出現讓操作便捷了很多,也讓普通人方便入門。

那麼程序語言呢?作為程序員有自己最喜歡或者最常用的語言嗎?

在那之前,也就是互相感嘆過去的時候,他已經在我的本子上從Q BASIC (那是他最先學會的語言)開始列出了自己一路的過程。

現在,他盯着那列語言想了想,圈出了C++,解釋說這算是他最喜歡的語言。 然後又圈出了PHP,因為“開發ShinoBot的時候有用上它”,最後又圈出了“x86 Assembler ” 和 “x64 Assembler” (常用匯編語言)。

我們又進入下一個熱門討論項,喜歡peer review嗎? 這一矽谷和中國北京互聯網公司常見的風氣似乎沒有浸染到他所在的公司。Shota認真理解了一番所謂捉對編程的概念後,又笑了起來,並慶幸自己沒碰上這種事,因為他更習慣獨自敲打代碼。

這個非典型的,看起來似乎太溫和的程序員又面臨了下一個嚴峻的考驗:對你而言,造就一個優秀程序員的是什麼(What makes a great coder)?

他第一次出現了窘態,重複了遍問題,感嘆說實在太難回答了。然後,似乎是在回答也似乎是在解釋為什麼回答不了的,開始說明自己對程序員的理解。

“對我而言,我編程就像我走路”。(I code like I walk)

這算是比較新穎的比喻。通常而言,程序員們更常說自己編程就像說話(code like I talk)——滔滔不絶,不需思考,手到擒來,簡明易懂等等。

他用手比出一條平穩的線,說,就像走路那樣自然,我在想編程的時候——不管那是什麼時候——就編程,同時也用我習慣的方法來編程。比如說加註釋,一些程序員會加很多註釋,一些不喜歡加,我會在我需要加的時候加。

他打開了自己的筆記本電腦,給我看他前幾天寫的代碼。 並指着其中的一部分。“比如我在用彙編語言指令時,會加詳細的註釋,不然自己以後肯定會忘了這些是什麼意思。 但在一些其他的地方很少加,因為自己看得懂”。

我們就這麼陷入了加註釋的習慣這一話題,直到最後分別,都忘了和他確認,他心中造就好程序員的東西到底是什麼。

(六)結尾與生活

他的侄子,二十二歲的在投資公司實習的大學生,以驚人的耐性(大概還有自娛自樂的能力)坐在我們旁邊微笑了兩個小時,終於在端來新的咖啡後決定離開去聽一場喜歡的演講。

Shota 接過侄子託管的尼康單反相機,開始極有趣味地向我展示它的性能。 比如對焦的準確度,放大遠景後的高清畫質等等。 他順便又提起了侄子,他們會在活動結束後用一個下午去澳門玩玩,因為侄子二十二歲,可以進賭場了。

我們討論了一些非常瑣碎的問題,比如到底有沒有必要去澳門和去澳門一晚上夠不夠玩等等。以及一些切實的問題,比如從小在法國長大並會流利法語給他帶來了什麼,常見的答案應該會和歐洲文化的魅力有關,不過Shota不是個常見的人。 他的回答是基本沒什麼,因為 “法國信息安全業不發達,法語研究資料不多”。

我們開始往會展門口走,他選擇那裡作為自己照片的拍攝背景,因為有個大大的RISE標誌。標誌前有一對參展團隊也在拍照。等待時我對著玻璃幕牆邊的人影和海景試拍了幾張,然後開始問他一些關於這款相機的白平衡和景深的問題。

這些問題似乎給了他某種我很擅長攝影的錯覺,所以在最後看到自己的紀念照時,露出了一種非常微妙的困惑表情。

[筆者技術有限,但相機真的是好相機]

我們向彼此客氣地解釋一番,比如拍到整個標誌就會看不清人之類的,然後和平地再次握手告別。

這位安全工程師將把電腦放回住的酒店,然後或者寫一會兒程序,或者早早為主辦方晚上在中國會舉辦的晚餐換上衣服。他當時指着邀請函上的正式着裝要求大笑了一番,但對於這個生於法國且一直頻繁來回的人而言,穿得合適,肯定不會是個問題。

[後面的話:

這是篇對一般讀者而言技術性太強的訪談。實際上,此文的上一稿更加晦澀難懂。但Shota對編程的那種“溫和派的熱愛” 實在充滿了魅力,讓人想起一些事實。在選擇越來越多,工具越來越複雜,大家習慣用喜歡的工具和語言站隊並彼此鄙視時,我們可能都忘了,一開始,我們決定輸入第一行代碼,拍下第一幅照片,寫下第一篇文章,都是因為那樣做很有趣。

給所有仍然在有趣中生活的人。]

#访谈 #shinobot #黑客 #websummit #网络安全

Just a Hi!
Recent Posts
Search By Tags
No tags yet.