Hack4S3cur1ty

[OTTERCTF][Memory Forensics] 12 - Recovery 본문

CTFs/2018

[OTTERCTF][Memory Forensics] 12 - Recovery

h4ck4s3cur1ty 2018. 12. 16. 07:17


주요 코드를 분석해보면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void startAction() {
    string password = this.CreatePassword(15);
    string str = "\\Desktop\\";
    string location = this.userDir + this.userName + str;
    this.SendPassword(password);
    this.encryptDirectory(location, password);
    this.messageCreator();
}
 
public string CreatePassword(int length) {
    StringBuilder stringBuilder = new StringBuilder();
    Random random = new Random();
    while (0 < length--) {
        stringBuilder.Append("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=&?&/"[random.Next("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=&?&/".Length)]);
    }
    return stringBuilder.ToString();
}
 
public void SendPassword(string password) {
    string text = string.Concat(new string[] {
        this.computerName, "-"this.userName, " ", password
    });
}

cs


CreatePassword함수로 15자리의 랜덤패스워드를 생성하고,

SendPassword함수로 "컴퓨터이름-유저네임 패스워드" 값을 생성한뒤,

SHA256으로 파일들을 암호화후 ".WINDOWS" 라는 확장자를 가진 파일로 암호화한다.


SendPassword 함수의 값의 "컴퓨터이름-유저네임" 을 통해 메모리덤프에서 패스워드를 찾을 수 있을 것 같다.

"WIN-LO6FAF3DTFE-Rick" 로 찾았는데 결과가 안나와서 삽질을 통해 사이에 널바이트를 삽입한

"57 00 49 00 4E 00 2D 00 4C 00 4F 00 36 00 46 00 41 00 46 00 33 00 44 00 54 00 46 00 45 00 2D 00 52 00 69 00 63 00 6B"으로 결과를 찾을 수 있었다.




Comments