作者: DappReview
公眾號:https://mp.weixin.qq.com/s/9Cl6-ZmAi-U3Qi6cPVZJxQ
系列閱讀:http://www.bjnorthway.com/917/
導讀:隨著新一天的調查,更多證據被各方挖掘出來,本次事件的真相正在逐漸浮出水面,戲劇化程度堪比一場年度大戲。文末還附上了wojak的財富密碼。
沒有讀過上一篇文章的讀者 請先移步閱讀本次事件第一集 《2600萬TRX被盜背后的羅生門》
注:以下調查的信息收集全部來自于Discord頻道Scam Watch、Telegram群“TronBank抱團維權”,以及DappReview與關聯人的聊天記錄。
wojak反悔退款
自從5月3日晚上9點wojak出現并貼出一份退款對比名單之后,再次從Discord消失,在此期間很多人開始給wojak打上Scammer(騙子)的標簽,并認為“他不會退款,可能已經開上蘭博基尼去度假了”,諸如此類言論不絕于耳。

5月5日中午12點
wojak再次現身,聲稱“我投入了8個小時寫工具來給所有人退款,等我寫完代碼回來發現大家都在把我想象成是一個騙子,而沒有意識到Tronbank才是放置后門坑了你們的人。你們原本會因此損失所有的投資。但在看到你們把我當成騙子而不是開發者后,我認為我沒有任何理由把TRX退還給你們”
此番言論遭到眾人反駁,wojak堅持認為自己所做的事情并不違法(illegal),自己也不是小偷,只是發起了一筆交易調用了智能合約,并且遵守了智能合約的規則。此后,wojak再也沒有表示過退款的可能性,而是讓所有人去找Tronbank進行索賠。
證據開始指向TSC開發者Khanh
5月5日中午12點
在真相依舊處于眾說紛紜的迷霧之中時,telegram中某開發者(要求匿名)發現了一條關鍵證據,進而扭轉了整個調查的方向,把更多的信息帶出水面。

TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 該地址于4月28日部署了一個與事發TRX Pro合約有同樣后門的“測試合約”(合約地址為 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日對后門進行了測試。

如上圖所示,TTX5N**該地址用同樣的方式發送了0.011911 TRX調用withdraw函數,觸發后門,提走自己事先存入的約100 TRX。
也就是說,在被盜時間(5月3日凌晨4點)約4天之前,竟然已經有人熟知此后門以及其調用方式。當我們去反編譯該測試合約并與TRX Pro被盜合約對比時,不難發現:

反編譯工具: https://www.trustlook.com/products/smartcontractguardian
這兩段代碼的后門部分完全一致!
而且更為神奇的是,“測試合約”的部署時間比項目方部署的正式合約竟然早了5小時23分鐘。
毫無疑問,TTX5N** 地址與本次后門事件必定脫不了關系。
而該地址的所有者是誰呢?
打開TSC的網站https://tronsmartcontract.space
點擊About Us

這正是TSC的開發者Khanh所擁有的地址
至此,Discord和tg群各路開發者開始梳理Khanh地址以及Tronbank開發者地址的合約部署、調用信息,梳理出以下時間線。
驚人的時間線

以上為Discord頻道中梳理的時間線(均為UTC時間),下面我們按照北京時間進行更細節的梳理。
4/28/2019 4:07 PM
TronBank開發者部署了TRX Pro的測試合約,該合約中通過反編譯并沒有發現后門,合約地址為:
https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ
4/28/2019 5:35 PM
僅在一個半小時后,由TSC開發者Khanh所擁有的地址TTX5N**部署了上文提到的“測試合約”,該合約中存在后門代碼,合約地址為:
https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz
4/28/2019 10:48 PM
Tronbank開發者了部署TRX Pro的正式版合約,該合約即被盜合約,其中有后門代碼,合約地址為:
https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ
4/28/2019 11:00 PM
在12分鐘之后,TSC開發者Khanh調用TRX Pro的正式版合約,并發送0.011011來測試后門。該筆交易記錄為:
https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89
4/30/2019 10:12 AM
TSC開發者Khanh調用自己在4/28/2019 5:35 PM 部署的存在后門的“測試合約”,觸發后門,并取走自己充進去的100 TRX,該筆交易記錄為:
https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f
5/3/2019 4:11 AM
wojak 調用TRX Pro的正式版合約withdraw函數,第一筆轉入了0.000123,并沒有任何效果,交易記錄為:
https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5
5/3/2019 4:12 AM
1分鐘后,wojak 再次調用TRX Pro的正式版合約withdraw函數,轉入0.011911,成功觸發后門,提走合約余額2673萬TRX,交易記錄為:
https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e
根據以上信息,可以歸納出兩個事實:
- Tronbank上線之前的測試版本合約,沒有后門,但最終線上正式版存在后門;
- TSC開發者Khanh在Tronbank測試版合約發布當天部署過一個有相同后門的合約,并且知道后門的調用方式,且在4月30日自己進行過測試。也就是說,該后門與TSC脫不了關系。
在與Tronbank團隊的溝通中,開發者提到,他們是使用TSC進行編譯的。(針對該言論的真實性,DappReview無法做出驗證)

注:以下內容是基于現有事實依據的可能性探討,不代表最終結論和真相,請再次傳播時不要斷章取義。
在第一篇文章《2600萬TRX被盜背后的羅生門》中,我們曾提到過三種可能性,
可能性一:Tronbank開發者在實際部署的合約中夾雜私貨放置了后門,并成功欺騙了TSC完成了另一份沒有后門的代碼驗證。
可能性二:Tronbank團隊和TSC團隊合謀,部署了有后門的合約,同時TSC協助用另一個沒有后門的合約完成驗證。
可能性三:Tronbank團隊沒有在合約中放置后門,而是后門在合約部署過程中以某種方式產生。
根據以上掌握到的更新信息,第一種可能性被否決,因為整個事件中,TSC開發者是最早調用后門的人,并不存在不知情被欺騙的情況,而第三種可能性的概率極大地增加。
TSC集合了編譯、部署、驗證的一條龍服務,從理論上來說,如果開發者使用TSC進行編譯并部署,期間確實有可能增加后門代碼。
在事發當天5月3日,Discord上詢問為什么TRX Pro的實際運行代碼與驗證代碼不一致時,Khank的回應如下:


上午7點22分回應:我剛起床聽到消息,讓我來掃描一下所有(代碼)
晚上9點18分回應:各位抱歉,我也不知道為什么他們通過了我的代碼(驗證)
而5月5日當Khank的地址部署過后門合約并且調用的證據出現后,在Discord網友的質疑下,Khanh的回應如下:

Mr Fahrenheit:你怎么解釋你的地址對另一個合約調用過可以觸發后門的交易?
Khanh:我的私鑰泄露了,github的密碼也泄露了
這個回應顯然過于蒼白,一方面人們質疑如果私鑰泄露為什么官網還掛著這個地址,另一方面該地址中還有28,052 TRX (價值約4400RMB)沒有被轉走。

此時此刻根據已有的信息進行客觀的分析,存在的可能性(注意,此處僅討論可能性,即便該可能性極低,真相目前沒有任何實錘證據)依舊有以下幾種:
可能性一:Tronbank團隊和TSC團隊合謀,部署了有后門的合約,同時TSC協助用另一個沒有后門的合約完成驗證。
可能性二:Tronbank團隊沒有在合約中放置后門,而是后門在合約部署過程中以某種方式產生。
以上的兩種可能性中,目前的證據對于而言偏向于第二種可能性,Tronbank團隊目前正在多次與Khanh溝通,并將部分對話截圖貼出,Tronbank團隊堅持沒有放置任何的后門,而是指向TSC是真正放置后門的元兇。目前雖沒有決定性的證據顯示后門是由Khanh放置,但是TSC和Khanh自身與后門已經脫不了干系。
可能性三:Khanh的github賬號被盜,地址私鑰泄露,幕后黑手另有其人。
關于這一點依照現有的證據,可能性較低,Khanh的回應含糊其辭,也并沒有提供賬戶被盜的證據(比如github關聯郵箱提示不安全登錄、密碼被修改等輔助信息)
至此 最終的謎題仍未解開 這一場年度大戲尚未落下帷幕 更多的證據仍待挖掘
wojak的財富密碼
整個事件中,wojak的那一筆神奇的交易依舊是關注本次事件的群眾口中一直談論的話題。究竟是什么樣的奇技淫巧能讓自動執行的代碼找到后門,并且觸發后門?
在DappReview與wojak的對話中,給出了答案:

wojak的靈感來自于2018年8月的一篇論文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》
該論文主要講了什么呢?
- 基于底層的EVM指令,提出了存在漏洞的智能合約的一種廣義定義;
- 提出了TEETHER工具,該工具能夠對于智能合約的字節碼進行自動化的漏洞識別并生成相應的漏洞利用代碼;
- 對于以太坊區塊鏈中部署的38,757個智能合約進行了大規模的漏洞分析,其中TEETHER工具發現了815個合約中的漏洞,整個過程完全自動化。
用一個不恰當但是通俗的比喻來說:TEETHER工具就是一臺能自動從智能合約找漏洞并且提款的ATM機。
wojak基于這篇文章做了什么事情?

- 把TEETHER工具針對波場虛擬機做了適配
- 收集波場上所有智能合約
- 對所有的合約執行TEETHER工具來分析
- 找到可能的套利機會 比如從合約A中以X的價格購買某Token,然后在合約B中以Y價格賣出(Y大于X),整個流程都是自動化執行而且合法
- 工具會產生一系列可能產生收益的交易列表
- 腳本自動執行并出發這些交易
本質上,那一筆神奇的交易就是這樣自動觸發的,連他自己都不知道發生了什么。至于wojak本身的行為是否可以定義為“黑客”,或者“違法”,此處暫且不展開深究。
有興趣研究這篇“財富密碼”的請看:
https://publications.cispa.saarland/2612/1/main.pdf
截至發稿,Tronbank已經宣布完成了鏈上投資數據的收集,統計完成后將按照原計劃發放賠付TRX。此外,TSC開發者Khanh已經關閉了個人Twitter和Facebook。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/918/