網路病毒是指人為編寫的特製程式,具有自我複製能力、很強的感染性,一定的潛伏性,特定的觸發性和很大的破壞性。
網路安全是指網路系統的硬體、軟體及其系統中的資料受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、洩露,系統連續可靠正常地執行,網路服務不中斷。
看似對立的兩種行為卻又是相互依存相互提高的。正因為駭客們不斷的改寫程式碼入侵網路,所以網路安全家們才能開發出效率更高安全性更強的安全防護工具。
幾維安全作為一家移動應用安全服務商,一直以來致力於為使用者及企業打造更安全的移動網際網路。針對IOS和Android兩大平臺,實現國內首個免費的移動應用攻擊防禦平臺,並且在此次峰會中推出了全新安全加密的產品KiwiVM虛擬機器。
傳統的加密方式
以Android SO為例
SO加殼—黑盒方式
功能:對SO進行二進位制加殼,破壞ELF檔案資訊,導致靜態反編譯工具解析失敗,靜態加密的方式,是透過干預系統對SO的載入過程進行動態解密。
缺陷:
1.恢復簡單,透過記憶體dump或者二進位制修復即可
2.平臺依賴嚴重,由於Android版本眾多,各家廠商對系統進行了不同程度的定製,所以針對不同的系統庫載入器均需要進行適配;
3.容易被脫殼,由於Android環境為開源環境,導致修改系統非常容易,脫殼手段層出不窮。
SO原始碼混淆—白盒方式
功能:基於OLLVM開源專案改造的程式碼混淆加密,包括指令平展化,邏輯混淆和字串加密。
缺陷:基於程式碼基本塊混淆粒度太大,只增加了假基本塊來迷惑分析者,仔細分析的情況下,真實塊很明顯。
KiwiVM程式碼虛擬化技術
功能:針對程式碼頂級加密方案,虛擬程式碼指令執行。
應用場景:針對C/C++開發的應用,SDK中的核心程式碼,關鍵資料保護程式碼,反欺詐資料採集核心邏輯,支付及通訊加解密模組。
應用原理介紹
幾維安全KiwiVM虛擬化編譯器基於LLVM編譯器中間層實現,透過設計獨有保密的虛擬CPU直譯器以及完備虛擬指令,將原始CPU指令進行加密轉換處理為只能由KiwiVM虛擬直譯器解釋執行的虛擬指令,能夠完全隱藏函式程式碼邏輯,以及函式及變數之間的依賴關係。
由於編譯器基於LLVM編譯器中間層實現,使得加密程式碼與業務程式碼緊密結合,有效阻擋逆向分析;由於是從編譯器內部生成平臺依賴程式碼前實現無平臺依賴程式碼虛擬化過程,不依賴於特定系統環境,無相容性問題,天然相容所有CPU架構,包括IOS,Android、armv7,arm64),Windows,Liunx(X86,X64),Other(Mips)等。
如圖所示:
KiwiVM程式碼虛擬化技術
(程式碼效果展示)
傳統的原始程式碼反編譯(使用IDA F5功能)
{
v2 = c;
_aeabi_memmove(c, p, 16);
shift_rows(v2);
v3 = 0;
v4 = t_boxes;
do
{
v5 = 0;
v6 = v4;
do
{
v7 = (*v6)[0][v2[v5]];
v6 = (uint8_t (*)[16][256])((char *)v6 + 256);
v2[v5++] = v7;
}
while ( v5 != 16 );
v8 = 0;
do
{
*(_DWORD *)&v2[4 * v8] = ty_tables[0][v2[4 * v8]] ^ ty_tables[1][v2[4 * v8 + 1]] ^ ty_tables[2][v2[4 * v8 + 2]] ^ ty_tables[3][v2[4 * v8 + 3]];
++v8;
}
while ( v8 != 4 );
shift_rows(v2);
++v3;
++v4;
}
while ( v3 != 9 );
v9 = t_boxes[9];
v10 = 0;
do
{
v11 = (*v9)[v2[v10]];
++v9;
v2[v10++] = v11;
}
while ( v10 != 16 );
}
使用KiwiVM虛擬機器施行程式碼反編譯(使用IDA F5功能)
KVMVoid __fastcall wbaes128_enc(void *p1, void *p2)
{
v5 = p2;
v6 = p1;
v3 = (int *)&v6;
v4 = (int *)&v5;
v7 = __KVM_RELOCS___;
v8 = __KVM_SIGNS___;
v9 = __KVM_MODULE___;
v10 = _kvm_init_gv__;
v11 = 1278;
v12 = 2;
v13 = (int *)&v3;
return *(_DWORD *)kiwisec_vm_interpreter(&v7);
}
相同的程式碼下不僅減少了程式碼行數,同時加深了程式碼安全能力。
KiwiVM程式碼虛擬化技術的優勢
01
頂級安全防護
自定義虛擬CPU,程式碼一旦加密,很難解密,其不可逆的特效能有效避免攻擊者透過DUMP記憶體,還原原始程式碼。
02
函式級虛擬化
以C、C++原始檔函式為單位進行虛擬化,具有粒度細、可控性高、隱蔽性強的特性,虛擬化之後函式完全隱藏。
03
全平臺全構架
支援iOS與安卓雙平臺的Native程式碼虛擬化,包括armv7、arm64、armv7a、x86、x86_64等架構。
04
相容情況良好
在C、C++程式碼編譯時直接虛擬化,其相容性與原始應用一樣。
廣告及反欺詐SDK應用場景
新產品KiwiVM虛擬機器加密相比於以往的加密方式,它的可操作性、安全性、高效性等都有顯著的提升。並且,在實際操作方面,KiwiVM虛擬機器也將更加的便捷,對於公司的安全部門和個人開發者而言,這項技術將大大減少多餘的工作量,提高工作效率。