Saturday, December 15, 2018

[Writeup] Mates SS3 Round 2

Misc

Round 2 Sanity Check

Theo miêu tả của đề bài, tác giả nhấn mạnh vào chữ rotate, nên mình google với từ khóa rotate decrypt và truy cập trang http://rumkin.com/tools/cipher/rotate.php sau khi thử với Box width bằng 6 thì mình có được flag

Flag: matesctf{s4n1ty_ch3ck}

Forensics

Chúng ta có 2 file, một file dump và 1 file Login Data của Chrome. Btc yều cầu nhập mật khẩu của facebook -> flag là password của account được lưu trong file dump. Sau khi dùng volatility không thành công mình để ý đến header thì nó là file minidump mà dạng file này thì dùng mimikatz là best. Bài này cũng hên là trong giải OtterCTF vừa rồi ngoài cách mình viết trong writeup thì có cách khác là dùng mimikatz như plugin của volatility nên mình có tìm hiểu.

Để analyze file thì mình load file và xem thử password:


mimikatz # sekurlsa::minidump dump.dmp
Switch to MINIDUMP : 'dump.dmp'

mimikatz # sekurlsa::logonpasswords
Opening : 'dump.dmp' file for minidump...

Authentication Id : 0 ; 370922 (00000000:0005a8ea)
Session           : Interactive from 1
User Name         : Admin
Domain            : TERMINALATOR
Logon Server      : TERMINALATOR
Logon Time        : 12/14/2018 11:35:09 AM
SID               : S-1-5-21-1143486773-2803761100-3357382775-1000
        msv :
         [00000003] Primary
         * Username : Admin
         * Domain   : TERMINALATOR
         * NTLM     : 7f59db8bb7564b0774aae7ccb7ca594b
         * SHA1     : caa5c83a1f28c9e51aeb5727adea95c4fd2f5dfa
         [00010000] CredentialKeys
         * NTLM     : 7f59db8bb7564b0774aae7ccb7ca594b
         * SHA1     : caa5c83a1f28c9e51aeb5727adea95c4fd2f5dfa
        tspkg :
        wdigest :
         * Username : Admin
         * Domain   : TERMINALATOR
         * Password : KeepGoingYouAreOnTheRightTrack<3

Ok vậy là mình đúng, tuy nhiên thì mình lại fail ở bước này vì mình cứ nghĩ config một máy ảo làm sao cho đúng password và username để unblob được file database. Sau mấy tiếng search hơn chục page google và stackoverflow, cuối cùng mình mới chắc chắn rằng chỉ có thể decrypt trên chính máy tạo ra file database.

Wednesday, December 12, 2018

[Writeup] Otter CTF 2018 - Memory forensics

1 - What the password?

Vừa đọc tên đề bài mình liền nghĩ đến một bài trước đây từng làm trên Root-me. Với yêu cầu này mình cần phải dump được 2 file SYSTEM và SAM. Tuy nhiên sau khi làm cách này mình không thể decrypt đươc đoạn hash nên đã phải dừng và làm những câu khác. Sau đó khi làm lại thì mình kỹ hơn các plugin của Volatility thì phát hiện một plugin rất hay đó là lspdump. Nhưng trước hết thì vẫn phải dùng plugin quen thuộc imageinfo để có được profile đã.


$ volatility -f OtterCTF.vmem imageinfo
Volatility Foundation Volatility Framework 2.6
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
                     AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
                     AS Layer2 : FileAddressSpace (/home/binh/Desktop/CTF/otter/OtterCTF.vmem)
                      PAE type : No PAE
                           DTB : 0x187000L
                          KDBG : 0xf80002c430a0L
          Number of Processors : 2
     Image Type (Service Pack) : 1
                KPCR for CPU 0 : 0xfffff80002c44d00L
                KPCR for CPU 1 : 0xfffff880009ef000L
             KUSER_SHARED_DATA : 0xfffff78000000000L
           Image date and time : 2018-08-04 19:34:22 UTC+0000
     Image local date and time : 2018-08-04 22:34:22 +0300

Như vậy là file vmem này dùng Win7. Tiếp đó dùng lsadump để có password của Rick.


$ volatility -f OtterCTF.vmem --profile=Win7SP1x64 lsadump
Volatility Foundation Volatility Framework 2.6
DefaultPassword
0x00000000  28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   (...............
0x00000010  4d 00 6f 00 72 00 74 00 79 00 49 00 73 00 52 00   M.o.r.t.y.I.s.R.
0x00000020  65 00 61 00 6c 00 6c 00 79 00 41 00 6e 00 4f 00   e.a.l.l.y.A.n.O.
0x00000030  74 00 74 00 65 00 72 00 00 00 00 00 00 00 00 00   t.t.e.r.........

DPAPI_SYSTEM
0x00000000  2c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ,...............
0x00000010  01 00 00 00 36 9b ba a9 55 e1 92 82 09 e0 63 4c   ....6...U.....cL
0x00000020  20 74 63 14 9e d8 a0 4b 45 87 5a e4 bc f2 77 a5   .tc....KE.Z...w.
0x00000030  25 3f 47 12 0b e5 4d a5 c8 35 cf dc 00 00 00 00   %?G...M..5......

flag: CTF{MortyIsReallyAnOtter}

2 - General Info

Bài này yêu cầu tìm tên máy tính và địa chỉ IP. Về địa chỉ IP thì mình khá chắc là địa chỉ private chứ không phải là public. Sau khi dùng netscan thì mình càng tự tin hơn.

$ volatility -f OtterCTF.vmem --profile=Win7SP1x64 netscan
Volatility Foundation Volatility Framework 2.6

Offset(P)          Proto    Local Address                  Foreign Address      State            Pid      Owner          Created
0x7d60f010         UDPv4    0.0.0.0:1900                   *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:17 UTC+0000
0x7d62b3f0         UDPv4    192.168.202.131:6771           *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:22 UTC+0000
0x7d62f4c0         UDPv4    127.0.0.1:62307                *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:17 UTC+0000
0x7d62f920         UDPv4    192.168.202.131:62306          *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:17 UTC+0000
0x7d6424c0         UDPv4    0.0.0.0:50762                  *:*                                   4076     chrome.exe     2018-08-04 19:33:37 UTC+0000
0x7d6b4250         UDPv6    ::1:1900                       *:*                                   164      svchost.exe    2018-08-04 19:28:42 UTC+0000
0x7d6e3230         UDPv4    127.0.0.1:6771                 *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:22 UTC+0000
0x7d6ed650         UDPv4    0.0.0.0:5355                   *:*                                   620      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d71c8a0         UDPv4    0.0.0.0:0                      *:*                                   868      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d71c8a0         UDPv6    :::0                           *:*                                   868      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d74a390         UDPv4    127.0.0.1:52847                *:*                                   2624     bittorrentie.e 2018-08-04 19:27:24 UTC+0000
0x7d7602c0         UDPv4    127.0.0.1:52846                *:*                                   2308     bittorrentie.e 2018-08-04 19:27:24 UTC+0000
0x7d787010         UDPv4    0.0.0.0:65452                  *:*                                   4076     chrome.exe     2018-08-04 19:33:42 UTC+0000
0x7d789b50         UDPv4    0.0.0.0:50523                  *:*                                   620      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d789b50         UDPv6    :::50523                       *:*                                   620      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d92a230         UDPv4    0.0.0.0:0                      *:*                                   868      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d92a230         UDPv6    :::0                           *:*                                   868      svchost.exe    2018-08-04 19:34:22 UTC+0000
0x7d9e8b50         UDPv4    0.0.0.0:20830                  *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:15 UTC+0000
0x7d9f4560         UDPv4    0.0.0.0:0                      *:*                                   3856     WebCompanion.e 2018-08-04 19:34:22 UTC+0000
0x7d9f8cb0         UDPv4    0.0.0.0:20830                  *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:15 UTC+0000
0x7d9f8cb0         UDPv6    :::20830                       *:*                                   2836     BitTorrent.exe 2018-08-04 19:27:15 UTC+0000
0x7d8bb390         TCPv4    0.0.0.0:9008                   0.0.0.0:0            LISTENING        4        System         
0x7d8bb390         TCPv6    :::9008                        :::0                 LISTENING        4        System         
0x7d9a9240         TCPv4    0.0.0.0:8733                   0.0.0.0:0            LISTENING        4        System         
0x7d9a9240         TCPv6    :::8733                        :::0                 LISTENING        4        System         
0x7d9e19e0         TCPv4    0.0.0.0:20830                  0.0.0.0:0            LISTENING        2836     BitTorrent.exe 
0x7d9e19e0         TCPv6    :::20830                       :::0                 LISTENING        2836     BitTorrent.exe 
0x7d9e1c90         TCPv4    0.0.0.0:20830                  0.0.0.0:0            LISTENING        2836     BitTorrent.exe 
0x7d42ba90         TCPv4    -:0                            56.219.196.26:0      CLOSED           2836     BitTorrent.exe 
0x7d6124d0         TCPv4    192.168.202.131:49530          77.102.199.102:7575  CLOSED           708      LunarMS.exe    
0x7d62d690         TCPv4    192.168.202.131:49229          169.1.143.215:8999   CLOSED           2836     BitTorrent.exe 
0x7d634350         TCPv6    -:0                            38db:c41a:80fa:ffff:38db:c41a:80fa:ffff:0 CLOSED           2836     BitTorrent.exe 

Phần scan cho ra khá nhiều process tuy nhiên mình chỉ upload đoạn đầu vì nó đủ cho ta biết đáp án của câu này còn phần mình tô xanh được dùng cho câu 3.

Sunday, December 2, 2018

Tìm hiểu mã QR



QR là viết tắt của quick response, là một loại mã vạch đặc biệt có thể mã hóa thông tin như số, chữ cái, và kí tự kanji được tạo bởi công ty Denso-Wave là một công ty con của tập đoàn Toyota.

Hiện nay có rất nhiều loại QR code như:
- QR code model 1 & 2: loại chúng ta thường thấy.
- Micro QR code: một loại QR code nhỏ.
- SQRC, iQR code, frame QR code,...

Trong bài viết này mình sẽ chỉ tập trung vào QR code model 2 vì từ tháng 9 năm 2006 ISO ISO/IEC 18004 cũng đã loại việc đọc mã QR code model 1 (đoạn này mình không biết nói sao cho đúng ý nhất nhưng vì sự vượt trội của QR model 2 nên phải loại model 1 để có tính thống nhất ấy).

QR model 1

Mã QR code gốc có thể mã hóa 1167 số và có tối đa 14 phiên bản (73x73)

QR model 2

Bản cải thiện của model 1 có thể mã hóa 7089 số và có tối đa 40 phiên bản (177x177).

Mã QR luôn có hình vuông và được phân chia làm 40 phiên bản dựa vào kích thước của chúng.

Phiên bản 1 sẽ có kích thước là 21x21.
Phiên bản 2 sẽ có kích thước là 25x25.
Phiên bản 3 sẽ có kích thước là 29x29.
....
Và cứ mỗi phiên bản sau sẽ lớn hơn phiên bản trước 4 đơn vị và đến phiên bản tối đa là 40 với kích thước là 177x177.

Kích thước của mã QR được xác định bởi công thức:

(V-1)*4+21
với V là phiên bản mã QR

Vây với phiên bản 30 ta sẽ có kích thước là 137x137.

Về kích thước:
Chắc hẳn các bạn sẽ thắc mắc tại sao có những ảnh phiên bản khác nhau nhưng lại cùng kích thước. Lý do là kích thước đó phụ thuộc vào bạn quy định bao nhiêu pixel cho một hàng, cột. Nếu bạn quy định 1 pixel là 1 hàng và 1 cột thì kích thước của 2 ảnh chắc chắn sẽ khác nhau. Vì vậy thay vì quyết định dựa trên số pixel của bức ảnh hãy dựa vào số hàng và cột của QR code đó. Trong bài viết này mình dựa vào hàng và cột như vậy sẽ dễ phân biệt và thuận tiện hơn trong bài viết.

Về dung lượng:
Dung lượng của mã QR phụ thuộc vào cấp độ sửa lỗi và phiên bản. Có bốn chế độ dữ liệu bao gồm: số, chữ và số, nhị phân, chữ kanji. Và bốn chế độ sửa lỗi: L, M, Q, H (mình sẽ nói kỹ hơn ở dưới). Các bạn có thể truy cập trang này đễ xem dung lượng tối đa mà mã QR có thể chứa dựa trên cấp sửa lỗi.

Về màu sắc mã:
QR luôn có hai màu là đen và trắng trong đó đen sẽ đại diện cho bit 1 còn trắng đại diện cho bit 0.

Cấu trúc của mã QR được thể hiện qua hình sau:



Vùng finder

Vùng finder là 3 ô vuông đen lớn ở ba góc trái trên, phải trên và trái dưới  bất kể phiên bản mã QR nào. Vùng này giúp cho thiết bị đọc mã xác định đươc ảnh QR và thực hiện việc đọc dữ liệu. Chính nhờ có vùng này mà khi chúng ta quay ảnh QR ngang, chéo thì điên thoại chúng ta vẫn có thể đọc được.
Mỗi ô vuông của vùng finder luôn có viền màu đen bên ngoài kích thước là 7 bên trong là một hình vuông trắng kích thước 5 và ở giữa là ô vuông đen 3x3.



Để xác định ví trị đặt 3 ô finder ta có công thức tính như sau:
Góc trái trên luôn luôn đặt tại vị trí (0,0)
Góc trái dưới đặt tại ví trí (x,0)
Góc phải trên đăt tại ví trí(0,y)
Trong đó x,y được tính bằng công thức:

(V-1)*4+14

với V là phiên bản mã QR.
Phiên bản 1

Vùng separators
Là vùng trắng bao quanh vùng finder giúp tách vùng finder và phần còn lại của mã QR.