錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
【深入理解AES】山西省首屆大學生信息安全技能大賽--價值200分的逆向

作者: skywilling  日期:2017-06-24 15:46:24   來源: 本站整理

0x00前言
一直以來都在研究Android的逆向,最近才開始研究PE逆向。這是第一次發關于PE逆向的帖子,所以有什么不妥或錯誤之處,還請壇友糾正。5月份,山西省舉辦了首屆大學生信息安全技能大賽--個人賽(借助i春秋平臺),本人有幸得到了本次大賽中唯一的一道逆向題目(價值200分,屬于中級題目)。本文以該題目作為研究對象(題目會在文章末尾的附件給出),下面正式開始題目的初探。。。
0x01初探
當得到這個題目之后,我們需要先了解該題目類型,下面是我得到的題目屬性截圖:
 
顯然這是一個windows平臺上面的題目,接下來我們看一下這個CrackMe的運行效果
 
這里是在cmd中運行的,這里要說一下的是,如果直接雙擊運行的話,在輸入答案之后,程序就會直接退出,看不見“回答錯誤!!!”這個信息,所以我們需要在cmd中運行,才能看到輸入答案后的結果。
明白了運行的效果,我們接下來看一下,這個CrackMe有沒有加殼,以及使用了哪些加密算法(看了官方的writeup之后,才知道
PEID可以查出來)
  
通過PEID查殼,我們可以看出,該CM沒有加殼。而且借助PEID的插件,我們也可以看出來該CM使用了MD5和Rijndael(AES)加密算法。
0x02分析加密流程
分析完了CM加殼和加密情況之后,我們正式開始CM的調試之旅。
 
通過動態靜態分析,我們在這里看到了MD5加密的特征數。
 
F5我們進一步分析,發現該CM對前8字節進行MD5加密(不太熟悉MD5的話可以去補習一下)。
 
繼續分析,這里是對MD5加密后的密文進行比較,大概的流程如下:
 
這可以看作是一個解方程組的過程,最后解出的結果是:
a=0x4d2ea664 
b=0xd50fa3b6 
c=0x3f67863b 
d=0x9560e59b
那么MD5密文就是64a62e4db6a30fd53b86673f9be56095
因為MD5加密是不可逆的,也就是說MD5加密是沒有解密算法的,這里就需要我們借助在線的MD5解密平臺了。
 
通過在線解密,我們看到明文是ichunqiu,接下來,我們繼續分析。
 
繼續分析,我們發現這里對剩下的字符串長度進行了比較,可以看出來,如果剩下字符串長度不等于0x10就退出,所以這里的字符串長度一定是0x10。
 
在這里對剩下字符串判斷,是否是大寫字母,到這里我們可以得到“字符串是16字節的大寫字母字符串”這個結論。
 
往下分析,我們看到,在這里以FROMYWWAY作為密鑰,對16字節的字符串進行了維吉尼亞加密。
 
最后到了這里就是AES加密了,這里就不再具體看匯編代碼了,值得一提的是,這里用的AES加密模式CBC模式。
因為使用的是AES-CBC加密,所以需要一個IV,在這里,我們看到IV就是ichunqiu的MD5密文。
 
在這里是比較AES加密后的結果,比較數據是:
 
 
到這里加密流程就分行完了,接下來詳細對加密進行分析。
0x03加密詳解
通過對加密流程的分析,我們可以得到加密流程如下:
 
在這里我們主要要找的明文是全是大寫字母的16字節字符串,所以我們需要詳細分析一下AES加密流程。
 

[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
void func6(unsigned char*mi,unsigned char*key,unsigned char*md5) {
        int i;
        //輪密鑰加
        for (i = 0; i < 0x10; i++) {
                mi ^= key;
        }
        for (i = 1; i < 10;i++) {
                func4(mi,key,i);
                func5(mi); //列混淆
        }
        func4(mi,key,10);
        for (i = 0; i < 0x10; i++) {
                mi ^= md5;
        }
}


[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void func4(unsigned char*mi,unsigned char*key,int k) {
        int i, j;
        unsigned char a, b;
        unsigned char *c,*d;
        //向下列移位
        /*
        state’[j] = state[(4+i-j)%4][j]
        */
        a = mi[9];
        b = mi[0xD];
        mi[0xD] = a;
        a = mi[5];
        mi[9] = a;
        a = mi[1];
        mi[5] = a;
        a = mi[0xA];
        mi[1] = b;
        b = mi[2];
        mi[2] = a;
        a = mi[0xE];
        mi[0xA] = b;
        b = mi[6];
        mi[6] = a;
        a = mi[7];
        mi[0xE] = b;
        b = mi[3];
        mi[3] = a;
        a = mi[0xB];
        mi[7] = a;
        a = mi[0xF];
        mi[0xB] = a;
        mi[0xF] = b;
        //字節替換
        d = mi;
        for (i = 0; i < 4;i++) {
                c = d;
                for (j = 0; j < 4;j++) {
                        a = *c;
                        c += 4;
                        a=table3[a];
                        *(c - 4) = a;
                }
                d++;
        }
        //輪密鑰加
        for (i = 0; i < 0x10; i++) {
                mi ^= *(key-0x10*k+i);
        }
}


這就是我分析出來的AES加密流程代碼,大致分為以下幾個流程:
1.密鑰擴展
2.10輪加密變換
3.矩陣行列互換
 
通過對標準AES的加密流程的分析,我們來分析一下,CM用的AES加密流程是什么樣的?
根據我編寫的加密代碼,AES的加密流程是:
1.輪密鑰加
2.(向下列移位,字節替代,列混淆)9輪加密
3.向下列移位,字節替代
4.異或MD5
通過比較,我們發現這里的AES加密過程事實上是一個標準的AES解密過程

但是如果我們足夠細心,還可以發現一處不同之處,明明在標準的AES加密解密過程中,進行的是行移位,但是在CM中卻是列移位。按我的理解是,因為在最后進行了矩陣的行列互換導致的吧,這一點我依然持保留意見。
詳細分析了加密流程,寫出解密代碼就簡單多了。加解密代碼我都會在附件中給出。
0x04結語
 
最后以成功的效果圖作為結尾。
附件: http://pan.baidu.com/s/1mi3beeG 密碼: 6xjf
版權聲明:允許轉載,但是一定要注明出處。



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: V一区无码内射国产| 无码精品国产一区二区三区免费| 日韩免费无码一区二区三区 | 久久亚洲AV无码精品色午夜麻| 无码精品A∨在线观看| 亚洲精品av无码喷奶水糖心| 国产无码网页在线观看| 亚洲AV成人片无码网站| 无码专区久久综合久中文字幕| 国产强被迫伦姧在线观看无码| 亚洲中文无码卡通动漫野外| AV无码精品一区二区三区宅噜噜| 精品无码一区二区三区电影| 亚洲av无码av制服另类专区| 无码人妻AⅤ一区二区三区水密桃 无码欧精品亚洲日韩一区夜夜嗨 无码免费又爽又高潮喷水的视频 无码毛片一区二区三区中文字幕 无码毛片一区二区三区视频免费播放 | 亚洲Aⅴ无码专区在线观看q| mm1313亚洲精品无码又大又粗| 精品无码AV无码免费专区| 中文字幕无码一区二区免费| 国产精品va无码二区| 无码射肉在线播放视频| 久久精品aⅴ无码中文字字幕重口| 成人无码网WWW在线观看| 精品一区二区无码AV| 国产成人亚洲精品无码AV大片| 久久久久无码精品国产h动漫 | 免费无码一区二区三区蜜桃大| 无码无遮挡又大又爽又黄的视频| YW尤物AV无码国产在线观看| 成人免费无码大片a毛片软件| 亚洲GV天堂GV无码男同| 亚洲av片不卡无码久久| 亚洲熟妇无码久久精品| 久久久久亚洲av无码专区喷水| 亚洲桃色AV无码| 久久久久无码精品亚洲日韩| 色窝窝无码一区二区三区| 久久久久久精品无码人妻| 精品亚洲A∨无码一区二区三区| 亚洲av无码片区一区二区三区| 日韩乱码人妻无码中文字幕久久|