My name is Yoshinori Takesako. It's very long
name. so call me "Yoshi". I came from Tokyo,
Japan.
1
I am a chairman of the SECCON. SECCON is a
largest security CTF contest in Japan. I am an
CTF organizer and a challenge creator. I am
also on the Open Web Application Security
Project - OWASP Japan advisory board.
And I am the review board for the CODE BLUE
which is a biggest international security
conference in Japan.
2
In this year, About 2,500 people took part in the
SECCON CTF qualifier from 58 countries around
the world. We held the international SECCON
CTF Final competition in this year at Tokyo,
Japan. Finally, Korean hacker team had won.
That was great.
3
I want to show the NIRVANA-KAI SECCON
Customized Mk-II. This is a real time
visualization system for attack and defense
battle of CTF. This real time visualization system
was developed by National Institute of
Information and Communications Technology -
NICT in Japan.
4
Okay, I talk about “Backdooring MS Office
documents with secret master keys”. We made
a lot of CTF challenges such as a XSS, reversing,
pwn, cryptography at SECCON CTF project.
when I created some cryptography challenges,
I found this backdoor problem. Microsoft Office
twenty ten or later version employ "Agile
Encryption" algorithm in their OOX documents.
We found a vulnerability in the file format
specification that can allow an attacker to later
decrypt strongly encrypted documents without
the password. This is possible by tricking MS
Office into creating an undetectable secret
master key when it creates encrypted
5
documents.
5
Microsoft has standardized the OOX file format
by ECMA international. It is not "Open Office"
XML format, Open Office is a rival application
for Microsoft. So “Office Open" XML format is
correct.
You can see at the DOCX suffix from filename.
And you know it is just a zip archive file.
6
However, when you encrypt a DOCX file, it will
become an old classical DOC FILE format. This
encrypted.DOCX file has a DOCX suffix. But, it is
not the zip archive file. You can see at file hex
dump header, "D0 CF 11 E0“. it is DOCFILE's leet
character!
7
Old classical DOC FILE format has been
standardized as the MS-CFB. This specifications
documentation was opened by Microsoft. I
think it is a great job.
8
MS-CFB file format has some mini FAT sectors.
Mini FAT has a 64-byte small sector size. mini
FAT sectors are in a standard chain in the FAT.
9
This is a figure of File layout of encrypted DOCX
file. Any encrypted DOCX file have a these file
in mini FAT. EncryptionPackage is an binary file
which was encrypted from original DOCX zip
file object. EncryptionInfo is very important
information for these encryption parameters.
10
Microsoft opened this Office cryptography
Cryptography Structure as [MS-OFFCRYPTO]. We
tried to read the MS-OFFCRYPTO document
carefully.
11
Yes, we can read the binary of DOC FILE!
12
If you want to protect your document with
passwords. In Microsoft Office, you can use
passwords to help prevent other people from
opening or modifying your documents.
Select the Protect Document menu on Info tab.
You can choose some submenu.
When you select "Encrypt with Password", the
Encrypt Document dialog box appears.
In the Password box, type a password. And
confirm password. Then Encrypted.docx is
saved.
13
There are another manipulation.
You can select SaveAs menu.
And push the Tool button and select
GeneralOption.
Then you can input the password just the same
way.
14
It's important to know that you don't forget the
password. Because Microsoft cannot retrieve
your forgotten passwords. If you forget the
password, we can not retrieve the original
documents.
But, is it true? I cannot decrypt actually?
15
For when this occurs , there are password
recovery software. oclHashcat is one of the
famous password recovery tools by command
line.
16
If you want to crack password protected MS
Office documents, type this command.
17
Recently oclHashcat supports GP-GPU power,
and supported new Office document OOX file
format.
18
Before you have to extract hash from encrypted
file by office2john.py.
19
There are another password recovery software
with simple User interface. I used the
Passcovery commercial edition which is very
powerful password recovery tools.
20
It's very simple graphic user interface. Only
clicking.
21
I evaluated comparing the decryption time of
password cracking. There are some encryption
file format. Classic Zip and AES Zip nad old
DOCFILE and new DOCX files.
DOCX files are very strong against Brute-force
attack.
22
Password consists of Latin small characters an
Latin capital characters and digits and special
symbols characters. If the password length is 8.
Time required to decrypt the encrypted Classic
ZIP file by brute force attack was 15 minutes. Its
encryption key bit is only 96.
WinZIP have a long AES encryption key, Time
required to decrypt the encrypted new WinZIP
file by brute force attack was 6 days. Time
required of brute force attacking has increased
gradually with Office version is newer.
23
Password consists of Latin small characters an
Latin capital characters and digits characters. If
the password length is 8. DOCX’s time required
of brute force attacking was about Twenty
thousand years with Office version is twenty
thirteen.
24
Password consists of 93 letters which include
Latin small characters and Latin capital
characters and digits and special symbols
characters. If the password length is 8. Office
twenty thirteen DOCX’s time required of brute
force attacking was about Sixty-seven million
years. If the password length is 10, you will not
be able to decrypt even coming the next Big
Bang.
25
26
27
28
This program code is password checking and
decoding algorithm. Please attention the line
that the secretkey is used. decData is
dependent on only secretkey and keydatasalt.
It is not dependent on password.
29
This is a figure of dependency of values in
decoding.
Decoded contents is dependent on only
secretkey and keydata.saltValuy. It is not
dependent on password. I think that it is a
problem.
30
This is a figure of dependency of values in
encoding.
There are problem with generating the
secretKey.
The secretKey used in AES encryption needs to
create an unique key with random data.
31
If the key is long enough and was created with
truly random data then it is thought to be
extremely difficult to crack.
However, if the secretKey was chosen in a
predictable manner then it will be easy to
crack.
The integrity of secure random generators (both
software and hardware based) are imperative
for strong encryption.
32
I would like to introduce my friend. Shigeo
Mitsunari is a software developer and
researcher at Cybozu Labs company. He
developed this msoffice-crypt.exe tools.
I was working together with him. He is a co-
author of this paper.
33
We made the encryption and decryption tools
for new Microsoft Office DOCX and XLSX and
PPTX files.
34
msoffice-crypt command has a decode with
inputed password options. It is d and p.
35
We made a decode with master key options. Is
is k.
36
And we made a encode option. It is e. Then
we have e and k and p options. We can
make two encrypted files by another password
with same master key. It is a backdoor.
37
38
39
1. In this demo, demo1.xlsx is encrypted with
the password "pass". The target software is
MS Excel twenty-thirteen.
2. demo2.xlsx is encrypted with another
password "pass1234".
3. However, MS Office was manipulated to
implant a hidden master key when these
files were created.
4. Therefore, these files can be easily
decrypted by the same master key
without any need to brute-force the
password.
5. In this example, the master key is set to
"001122...FF0011...FF".
40
41
IT admin can "unlock" the password-protected
OOXML Word, Excel and PowerPoint files for a
user and then either leave the file without
password protection! (it is official)
42
43
44
1
st
attack vector is that some attacker can
replace the random generator function by
Win32 API hooking.
45
There are so many API hooking techniques. IAT
Import Address Table function hooking is one of
the famous Windows API hooking techniques.
46
And more over, there are WinAPIOverride thirty-
two and sixty-four application. It’s very nice
software. I like it.
47
Microsoft Research created general purpose
function hooking library “Detours”.
It can easily hook the application by DLL
injection.
In this case, I can hook the CryptGenRandom
function on Advapi32.dll. Then hooked
CryptGenRandom function always return the
fixed value. 0x33
48
In other case, I can hook the CPGenRandom
function on old Windows API. Hooked
CPGenRandom function always return the fixed
value which is not random value.
49
In another case, I can hook the
rtl_random_getBytes function on sal3.dll which
is used by LibreOffice application. I can control
the randomness on my own computer.
50
2
nd
attack vector is that some attackers can
replace the random generator in embedded
hardware chips.
51
Intel developed the RdRand instruction in the
hardware chip. Core i7 so on. It generate truly
random by Intel's new hardware chips.
52
The pseudo-device /dev/random generates a
virtually endless stream of random numbers on
GNU/Linux systems. RdRand is an instruction
found in modern Intel CPU chips that stashes a
"high-quality and high-performance entropy"
generated random number in a given CPU
register. These, hopefully, unpredictable values
are vital in producing secure session keys, new
public-private keys and padding in modern
encryption technology.
If some government intelligence agencies have
managed to persuade Intel to hobble that
instruction. The strength of encryption
algorithms will be weak on that random data.
53
Linus Torvalds's answer is very simple.
we use rdrand as one of many inputs into the
random pool, and we use it as a way to
improve that random pool. So even if rdrand
were to be back-doored by some government
intelligence agencies, our use of rdrand
actually improves the quality of the random
numbers you get from /dev/random.
We can get the source code of Linux. And This
is because it can be verified binaries on your
own machines. It’s very important that Linux is a
open source software.
54
However, what is in the cloud environments?
3
rd
attack vector is that some attackers can use
the predictable number generator secretly in
cloud environments.
55
Recently, Microsoft released an Office online.
You can try this one as Office twenty-sixteen
preview edition. The Office application will be
on the Microsoft's cloud system. I think that we
can not stop these cloud system movements
now. We should check how the cloud
encryption algorithm and encryption system is
safety. Some industry companies become to
have an interest in safety encryption system. I
think that it is important things. Linux is a open
source, but Microsoft product is closed source.
56
Recent MS Office twenty-ten or later version’s
documents are normally encrypted very
strongly, making them difficult to brute force
attacks. However, there are techniques some
attacker can use to secretly backdoor these
encrypted documents to make them trivial to
decrypt. Cloud environments may be more
dangerous than thought as it is not possible for
users to confirm the security of their encryption.
And it would be easy for cloud providers to
backdoor encryption in undetectable ways.
If advanced attackers can access to those
cloud providers, it will become a serious
problem.
57
Thank you for your attention. And I want to say
thanks for some supported members. That’s all.
58