DEFCON – Red Team Village CTF – covidscammers Challenge Walkthrough

Salam, Jumaat lepas team h0f telah join DEFCON – Red Team Village CTF (Qualifications round), dan kami telah buat beberapa Challenge yang agak mudah, memandangkan kesuntukan masa dan komitmen lain, kami main yang surface saja. Hehehehe. So ini merupakan Unofficial Writeup bagi Challenge tersebut.

covidscammers Challenge Walkthrough

Abam akan share Writeup yang simple(maleh nak cito panjang-panjang la, hahaha) berkaitan covidscammers Challenge, berikut adalah Challenges yang telah dapat kami selesaikan.


Free Flag (and binary)

You’ve been contacted by a high-end but morally ambiguous finance company (unhackable-bitcoin-wallet.com) to investigate a data breach. The box in question is a mail server in their internal network, a sample of the malware found on the system has been pulled and given to you. Your task, should you choose to accept it, is to reverse-engineer the sample and locate, fuzz and exploit the C2 server, and then hack-back to learn about the malicious actor and recover the stolen documents.

Solutions:

strings client | grep "free"

atau

  • buka ghidra (windows -> Defined Strings)
  • Address 0x0804a47a boleh digunakan sebagai starting breakpoint untuk dynamic analysis

Flag: TS{freeFlagLookatMe}


Syscalls

What syscall is hindering your dynamic analysis? Flag is just the syscall, no brackets or anything.

Solutions:

strace ./client

atau

Double click pada address 0x0804a47a dan scroll ke atas untuk mencari point What syscall is hindering your dynamic analysis?

The ptrace system call allows one process to trace another. My guess is that your application (that is trying to detect the debugger) spawns a child process (or maybe thread) and then uses ptrace to attach to this child, just like a debugger would.

Flag: ptrace


Who Me?

What is this malware sample called (not the actual binary name)? Flag is the name as a string, no brackets or anything.

Solutions:

strings client | grep -i covid

Flag: TheCovidBotNet


Scouting

What is the C2 server? Provide the domain as the answer, no brackets or anything..

Solutions:

Dynamic Analysis

wireshark &

./client

Static Analysis

echo -n "Y292aWRmdW5kcy5uZXQ=" | base64 -d

Flag: covidfunds.net


This is nice, might stay a while…

How does the malware persist? SHA1 hash the path of the persistence location.
echo -n “/full/path” | sha1sum

Solutions:

Dynamic Analysis

file ./client

./client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
binary statically linked dan not stripped
./client

ls /etc/init.d

echo -n "/etc/init.d/covid" | sha1sum

Static Analysis

if ((param_1 < 2) ||
    (iVar3 = strcmp("TS{freeFlagLookatMe}",*(char **)(param_2 + 4)), iVar3 == 0)) {
        covid_global_init();
        local_d0[0] = -0x79;
        local_d0[1] = 0xca;
        local_d0[2] = 0xcd;
        local_d0[3] = 0xc6;
        local_cc = 0x87;
        local_cb = 0xc4;
        local_ca = 199;
        local_c9 = 0xbb;
        local_c8 = 0xc3;
        local_c7 = 0x87;
        local_c6 = 0x86;
        local_c5 = 0xcb;
        local_c4 = 0xbd;
        local_c3 = 0xca;
        local_c2 = 0xce;
        local_c1 = 0xbd;
        local_c0 = 0xca;
        local_bf = 0xb9;
        local_be = 0xcd;
        local_bd = 0xcc;
        local_bc = 0xc0;
        local_bb = 0x86;
        local_ba = 0xa6;
        local_b9 = 0x8f;
        local_b8 = 0xcc;
        local_b7 = 0xa1;
        local_b6 = 0xcc;
        local_b5 = 0xbe;
        local_b4 = 0xc1;
        local_b3 = 0xcf;
        local_b2 = 0x8c;
        local_b1 = 200;
        local_b0 = 0;
        local_24 = local_d0;
		
while (*local_24 != '\0') {
  pcVar1 = local_24 + 1;
  *local_24 = *local_24 + -0x58;
  local_24 = pcVar1;
} 

Byte Arrays berikut perlu didecode:

[0x87,0xbd,0xcc,0xbb,0x87,0xc1,0xc6,0xc1,0xcc,0x86,0xbc,0x87,0xbb,0xc7,0xce,0xc1,0xbc,0x0]

Tetapi nilainya perlu ditolak dengan 0x58 berdasarkan pseudo code berikut:

while (*local_24 != '\0') {
        pcVar1 = local_24 + 1;
        *local_24 = *local_24 + -0x58;
        local_24 = pcVar1;
      }

flag.py

data = [0x87,0xbd,0xcc,0xbb,0x87,0xc1,0xc6,0xc1,0xcc,0x86,0xbc,0x87,0xbb,0xc7,0xce,0xc1,0xbc]
length = len(data) 
for i in range(length):
	path = chr(data[i]-0x58)
	print(path, end ="")
echo -n "/etc/init.d/covid" | sha1sum

Flag: b2444a31d941bdadc4bd3fcbbac2102859a101d2


Shared Secrets

The malware creates a shared-memory object and stores a flag inside. Recover the flag. Flag has the TS{} format, you’ll know when you get it.

Solutions:

Dynamic Analysis

./client

ls /dev/shm

cat /dev/shm/egarots_divoc

echo -n KRJXW22FMVYES5CTMVBXERKUNNCWK4CJORJWCRTFFZGXERTSGBSE6IL5 | base32 -d

Flag: TS{kEepItSeCrETkEepItSaFe.MrFr0dO!}


Ok, selesai. Insya Allah bertemu lagi diposting yang akan datang…

DEFCON – Red Team Village CTF – Logs Challenge Walkthrough

Salam, Jumaat lepas team h0f telah join DEFCON – Red Team Village CTF (Qualifications round), dan kami telah buat beberapa Challenge yang agak mudah, memandangkan kesuntukan masa dan komitmen lain, kami main yang surface saja. Hehehehe. So ini merupakan Unofficial Writeup bagi Challenge tersebut.

Logs Challenge Walkthrough

Abam akan share Writeup yang simple(maleh nak cito panjang-panjang la, hahaha) berkaitan Logs Challenge, berikut adalah Challenges yang telah dapat kami selesaikan. Ayat copy pes jer dari posting lopeh. Hahaha

Rajah 1: Logs Challenge

Abam hanya kongsi step ringkas untuk dapatkan flag secara terus, proses try and error abam tak share la, panjang na.


1 – What failed

After a hard day of defeating cyber attacks from adversaries, let’s dig into some sweet log files from our server to see how many cyber attacks we single handidly stopped.

What service was fail2ban configured to protect?

Solutions:

Dari fail fail2ban.log kita tahu dah service yang dimaksudkan adalah ssh

Flag: ssh


2 – Who failed

How many different IP addresses were banned?

Solutions:

grep -h "Ban " fail2ban.log | awk '{print $NF}' | sort | uniq -c | wc -l

Flag: 8


3 – We failed

How many times did the fail2ban service reach an unrecoverable state?

Solutions:

cat fail2ban.log | grep "CRITICAL Unable to restore environment" | wc -l

Flag: 48


4 – Whom failed

What was the most frequently banned IP address?

Solutions:

grep -h "Ban " fail2ban.log | awk '{print $NF}' | sort | uniq -c

Flag: 116.31.116.47


Ok, selesai. Insya Allah kot free nanti abam bikin riteup untuk challenge lain pulak, barangkalilah! hehehe.

DEFCON – Red Team Village CTF – Pwn Challenge Walkthrough

Salam, Jumaat lepas team h0f telah join DEFCON – Red Team Village CTF (Qualifications round), dan kami telah buat beberapa Challenge yang agak mudah, memandangkan kesuntukan masa dan komitmen lain, kami main yang surface saja. Hehehehe. So ini merupakan Unofficial Writeup bagi Challenge tersebut.

Pwn Challenge Walkthrough

Abam akan share Writeup yang simple(maleh nak cito panjang-panjang la, hahaha) berkaitan Pwn Challenge, berikut adalah Challenges yang telah dapat kami selesaikan. Ayat copy pes jer dari posting lopeh. Hahaha

Rajah 1: Pwn Challenge

Abam hanya kongsi step ringkas untuk dapatkan flag secara terus, proses try and error abam tak share la, panjang na.


Clicker

All you have to do is score 10,000,000 to get the flag.

Get Clicking!!!!!

Solutions:

gdb -q ./clicker

(gdb) disass main
Dump of assembler code for function main:
   0x00000000004012bd <+0>:	push   %rbp
   0x00000000004012be <+1>:	mov    %rsp,%rbp
   0x00000000004012c1 <+4>:	sub    $0x20,%rsp
   0x00000000004012c5 <+8>:	movq   $0x0,-0x8(%rbp)
   0x00000000004012cd <+16>:	movl   $0x1,-0xc(%rbp)
   0x00000000004012d4 <+23>:	movl   $0x64,-0x10(%rbp)
   0x00000000004012db <+30>:	lea    0xd7e(%rip),%rdi        # 0x402060
   0x00000000004012e2 <+37>:	callq  0x401030 <puts@plt>
   0x00000000004012e7 <+42>:	lea    0xf7b(%rip),%rdi        # 0x402269
   0x00000000004012ee <+49>:	callq  0x401030 <puts@plt>
   0x00000000004012f3 <+54>:	lea    -0x1c(%rbp),%rax
   0x00000000004012f7 <+58>:	mov    %rax,%rsi
   0x00000000004012fa <+61>:	lea    0xf7b(%rip),%rdi        # 0x40227c
   0x0000000000401301 <+68>:	mov    $0x0,%eax
   0x0000000000401306 <+73>:	callq  0x4010b0 <__isoc99_scanf@plt>
   0x000000000040130b <+78>:	lea    -0x1c(%rbp),%rax
   0x000000000040130f <+82>:	mov    %rax,%rsi
   0x0000000000401312 <+85>:	lea    0xf66(%rip),%rdi        # 0x40227f
   0x0000000000401319 <+92>:	mov    $0x0,%eax
   0x000000000040131e <+97>:	callq  0x401050 <printf@plt>
   0x0000000000401323 <+102>:	lea    0xf5e(%rip),%rdi        # 0x402288
   0x000000000040132a <+109>:	callq  0x401030 <puts@plt>
   0x000000000040132f <+114>:	mov    $0x0,%edi
   0x0000000000401334 <+119>:	callq  0x401090 <time@plt>
   0x0000000000401339 <+124>:	mov    %eax,%edi
   0x000000000040133b <+126>:	callq  0x401060 <srand@plt>
   0x0000000000401340 <+131>:	jmpq   0x401470 <main+435>
   0x0000000000401345 <+136>:	cmpl   $0xa,-0x14(%rbp)
   0x0000000000401349 <+140>:	jne    0x401411 <main+340>
   0x000000000040134f <+146>:	mov    -0xc(%rbp),%eax
   0x0000000000401352 <+149>:	cltq   
   0x0000000000401354 <+151>:	add    %rax,-0x8(%rbp)
   0x0000000000401358 <+155>:	mov    -0x8(%rbp),%rax
   0x000000000040135c <+159>:	mov    %rax,%rsi
   0x000000000040135f <+162>:	lea    0xf55(%rip),%rdi        # 0x4022bb
   0x0000000000401366 <+169>:	mov    $0x0,%eax
   0x000000000040136b <+174>:	callq  0x401050 <printf@plt>
   0x0000000000401370 <+179>:	mov    -0xc(%rbp),%eax
   0x0000000000401373 <+182>:	mov    %eax,%esi
   0x0000000000401375 <+184>:	lea    0xf59(%rip),%rdi        # 0x4022d5
   0x000000000040137c <+191>:	mov    $0x0,%eax
   0x0000000000401381 <+196>:	callq  0x401050 <printf@plt>
   0x0000000000401386 <+201>:	mov    -0x10(%rbp),%eax
   0x0000000000401389 <+204>:	mov    %eax,%esi
   0x000000000040138b <+206>:	lea    0xf53(%rip),%rdi        # 0x4022e5
   0x0000000000401392 <+213>:	mov    $0x0,%eax
   0x0000000000401397 <+218>:	callq  0x401050 <printf@plt>
   0x000000000040139c <+223>:	lea    0xf5d(%rip),%rdi        # 0x402300
   0x00000000004013a3 <+230>:	callq  0x401030 <puts@plt>
   0x00000000004013a8 <+235>:	callq  0x4010c0 <rand@plt>
   0x00000000004013ad <+240>:	movslq %eax,%rdx
   0x00000000004013b0 <+243>:	imul   $0x5d9f7391,%rdx,%rdx
   0x00000000004013b7 <+250>:	shr    $0x20,%rdx
   0x00000000004013bb <+254>:	mov    %edx,%ecx
   0x00000000004013bd <+256>:	sar    $0x8,%ecx
   0x00000000004013c0 <+259>:	cltd   
   0x00000000004013c1 <+260>:	sub    %edx,%ecx
   0x00000000004013c3 <+262>:	mov    %ecx,%edx
   0x00000000004013c5 <+264>:	mov    %edx,-0x18(%rbp)
   0x00000000004013c8 <+267>:	mov    -0x18(%rbp),%edx
   0x00000000004013cb <+270>:	imul   $0x2bc,%edx,%edx
   0x00000000004013d1 <+276>:	sub    %edx,%eax
   0x00000000004013d3 <+278>:	mov    %eax,-0x18(%rbp)
   0x00000000004013d6 <+281>:	cmpl   $0x35,-0x18(%rbp)
   0x00000000004013da <+285>:	jne    0x4013fd <main+320>
   0x00000000004013dc <+287>:	mov    -0x8(%rbp),%rax
   0x00000000004013e0 <+291>:	mov    %rax,%rdx
   0x00000000004013e3 <+294>:	shr    $0x3f,%rdx
   0x00000000004013e7 <+298>:	add    %rdx,%rax
   0x00000000004013ea <+301>:	sar    %rax
   0x00000000004013ed <+304>:	mov    %rax,-0x8(%rbp)
   0x00000000004013f1 <+308>:	lea    0xf32(%rip),%rdi        # 0x40232a
   0x00000000004013f8 <+315>:	callq  0x401030 <puts@plt>
   0x00000000004013fd <+320>:	cmpq   $0x98967f,-0x8(%rbp)
   0x0000000000401405 <+328>:	jle    0x401411 <main+340>
   0x0000000000401407 <+330>:	mov    $0x0,%eax
   0x000000000040140c <+335>:	callq  0x4011b2 <secret_function>
   0x0000000000401411 <+340>:	cmpl   $0x62,-0x14(%rbp)
   0x0000000000401415 <+344>:	jne    0x401455 <main+408>
   0x0000000000401417 <+346>:	mov    -0x10(%rbp),%eax
   0x000000000040141a <+349>:	cltq   
   0x000000000040141c <+351>:	cmp    %rax,-0x8(%rbp)
   0x0000000000401420 <+355>:	jl     0x401449 <main+396>
   0x0000000000401422 <+357>:	mov    -0x10(%rbp),%eax
   0x0000000000401425 <+360>:	cltq   
   0x0000000000401427 <+362>:	sub    %rax,-0x8(%rbp)
   0x000000000040142b <+366>:	addl   $0x1,-0xc(%rbp)
   0x000000000040142f <+370>:	cvtsi2sdl -0x10(%rbp),%xmm1
   0x0000000000401434 <+375>:	movsd  0xf24(%rip),%xmm0        # 0x402360
   0x000000000040143c <+383>:	mulsd  %xmm1,%xmm0
   0x0000000000401440 <+387>:	cvttsd2si %xmm0,%eax
   0x0000000000401444 <+391>:	mov    %eax,-0x10(%rbp)
   0x0000000000401447 <+394>:	jmp    0x401455 <main+408>
   0x0000000000401449 <+396>:	lea    0xef3(%rip),%rdi        # 0x402343
   0x0000000000401450 <+403>:	callq  0x401030 <puts@plt>
   0x0000000000401455 <+408>:	cmpl   $0x73,-0x14(%rbp)
   0x0000000000401459 <+412>:	jne    0x401470 <main+435>
   0x000000000040145b <+414>:	mov    -0x8(%rbp),%rax
   0x000000000040145f <+418>:	mov    %eax,%ecx
   0x0000000000401461 <+420>:	mov    -0x10(%rbp),%edx
   0x0000000000401464 <+423>:	mov    -0xc(%rbp),%eax
   0x0000000000401467 <+426>:	mov    %eax,%esi
   0x0000000000401469 <+428>:	mov    %ecx,%edi
   0x000000000040146b <+430>:	callq  0x401262 <save>
   0x0000000000401470 <+435>:	callq  0x401070 <getchar@plt>
   0x0000000000401475 <+440>:	mov    %eax,-0x14(%rbp)
   0x0000000000401478 <+443>:	cmpl   $0xffffffff,-0x14(%rbp)
   0x000000000040147c <+447>:	jne    0x401345 <main+136>
   0x0000000000401482 <+453>:	mov    $0x0,%eax
   0x0000000000401487 <+458>:	leaveq 
   0x0000000000401488 <+459>:	retq   
End of assembler dump.
(gdb) break main

(gdb) disass secret_function
Dump of assembler code for function secret_function:
   0x00000000004011b2 <+0>:	push   %rbp
   0x00000000004011b3 <+1>:	mov    %rsp,%rbp
   0x00000000004011b6 <+4>:	sub    $0x20,%rsp
   0x00000000004011ba <+8>:	movw   $0x7374,-0x3(%rbp)
   0x00000000004011c0 <+14>:	movb   $0x0,-0x1(%rbp)
   0x00000000004011c4 <+18>:	movl   $0x66667562,-0x8(%rbp)
   0x00000000004011cb <+25>:	movb   $0x0,-0x4(%rbp)
   0x00000000004011cf <+29>:	movw   $0x7b,-0xa(%rbp)
   0x00000000004011d5 <+35>:	movw   $0x776f,-0xd(%rbp)
   0x00000000004011db <+41>:	movb   $0x0,-0xb(%rbp)
   0x00000000004011df <+45>:	movw   $0x766f,-0x10(%rbp)
   0x00000000004011e5 <+51>:	movb   $0x0,-0xe(%rbp)
   0x00000000004011e9 <+55>:	movw   $0x6761,-0x13(%rbp)
   0x00000000004011ef <+61>:	movb   $0x0,-0x11(%rbp)
   0x00000000004011f3 <+65>:	movw   $0x7d,-0x15(%rbp)
   0x00000000004011f9 <+71>:	movw   $0x6c66,-0x18(%rbp)
   0x00000000004011ff <+77>:	movb   $0x0,-0x16(%rbp)
   0x0000000000401203 <+81>:	movw   $0x7265,-0x1b(%rbp)
   0x0000000000401209 <+87>:	movb   $0x0,-0x19(%rbp)
   0x000000000040120d <+91>:	lea    0xdf4(%rip),%rdi        # 0x402008
   0x0000000000401214 <+98>:	callq  0x401030 <puts@plt>
   0x0000000000401219 <+103>:	lea    -0x10(%rbp),%r8
   0x000000000040121d <+107>:	lea    -0x1b(%rbp),%rdi
   0x0000000000401221 <+111>:	lea    -0x8(%rbp),%rcx
   0x0000000000401225 <+115>:	lea    -0xa(%rbp),%rdx
   0x0000000000401229 <+119>:	lea    -0x3(%rbp),%rax
   0x000000000040122d <+123>:	lea    -0x15(%rbp),%rsi
   0x0000000000401231 <+127>:	push   %rsi
   0x0000000000401232 <+128>:	lea    -0xd(%rbp),%rsi
   0x0000000000401236 <+132>:	push   %rsi
   0x0000000000401237 <+133>:	lea    -0x18(%rbp),%rsi
   0x000000000040123b <+137>:	push   %rsi
   0x000000000040123c <+138>:	lea    -0x1b(%rbp),%rsi
   0x0000000000401240 <+142>:	push   %rsi
   0x0000000000401241 <+143>:	mov    %r8,%r9
   0x0000000000401244 <+146>:	mov    %rdi,%r8
   0x0000000000401247 <+149>:	mov    %rax,%rsi
   0x000000000040124a <+152>:	lea    0xdcf(%rip),%rdi        # 0x402020
   0x0000000000401251 <+159>:	mov    $0x0,%eax
   0x0000000000401256 <+164>:	callq  0x401050 <printf@plt>
   0x000000000040125b <+169>:	add    $0x20,%rsp
   0x000000000040125f <+173>:	nop
   0x0000000000401260 <+174>:	leaveq 
   0x0000000000401261 <+175>:	retq   
End of assembler dump.

(gdb) run
Starting program: /root/Desktop/clicker 

Breakpoint 1, 0x00000000004012c1 in main ()
(gdb) jump *0x4011b2 
Continuing at 0x4011b2.
Congratulations!
The flag is ts{bufferoverflow}[Inferior 1 (process 3367) exited normally]
Rajah 2: gdb clicker

Flag: ts{bufferoverflow}


Strings

strings the attached file or maybe you can’t, I don’t know what I’m doing.

Solutions:

strings.s

	.file	"strings.c"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movabsq	$8023554614420534132, %rax
	movabsq	$7598263422860612981, %rdx
	movq	%rax, -32(%rbp)
	movq	%rdx, -24(%rbp)
	movabsq	$8386069135032018798, %rax
	movq	%rax, -16(%rbp)
	movl	$8221544, -8(%rbp)
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Debian 9.3.0-13) 9.3.0"
	.section	.note.GNU-stack,"",@progbits
gcc -c strings.s -o strings.o
gcc strings.o -o strings
chmod +x strings
./strings

strings strings | less
ts{DidYoH
uUseStriH
ngsorMatH
Rajah 3: strings

Setelah beberapa kali percubaan dan tekaan:

ts{DidYoHuUseStriHngsorMatH

ts{DidYouUseStringsorMat

ts{DidYouUseStringsorMaths} 

Flag: ts{DidYouUseStringsorMaths}


ltrace-easy

Can you run the binary?

You may have to trace it or something.

Solutions:

chmod +x ltrace-easy 
./ltrace-easy

ltrace ./ltrace-easy 
Rajah 4: ltrace
strings ltrace-easy | less
ts{whydiH
dyouevenH
runit}

Flag: ts{whydidyouevenrunit}


Ok, selesai. Insya Allah kot free nanti abam bikin riteup untuk challenge lain pulak, barangkalilah! hehehe.

DEFCON – Red Team Village CTF – RCE Challenge Walkthrough

Salam, Jumaat lepas team h0f telah join DEFCON – Red Team Village CTF (Qualifications round), dan kami telah buat beberapa Challenge yang agak mudah, memandangkan kesuntukan masa dan komitmen lain, kami main yang surface saja. Hehehehe. So ini merupakan Unofficial Writeup bagi Challenge tersebut.

RE Challenge Walkthrough

Abam akan share Writeup yang simple(maleh nak cito panjang-panjang la, hahaha) berkaitan RE Challenge, berikut adalah Challenges yang telah dapat kami selesaikan. Ayat copy pes jer dari posting lopeh. Hahaha

Rajah 1: RE Challenge

Debug me

Or just dissasemble me.

Solutions:

Abam hanya kongsi step ringkas untuk dapatkan flag secara terus, proses try and error abam tak share la, panjang na.

$file re_me
$gdb -q ./re_me

(gdb) disass main
Dump of assembler code for function main:
   0x080484be <+0>:	lea    0x4(%esp),%ecx
   0x080484c2 <+4>:	and    $0xfffffff0,%esp
   0x080484c5 <+7>:	pushl  -0x4(%ecx)
   0x080484c8 <+10>:	push   %ebp
   0x080484c9 <+11>:	mov    %esp,%ebp
   0x080484cb <+13>:	push   %ebx
   0x080484cc <+14>:	push   %ecx
   0x080484cd <+15>:	call   0x80484ff <__x86.get_pc_thunk.ax>
   0x080484d2 <+20>:	add    $0x1b2e,%eax
   0x080484d7 <+25>:	sub    $0xc,%esp
   0x080484da <+28>:	lea    -0x1a70(%eax),%edx
   0x080484e0 <+34>:	push   %edx
   0x080484e1 <+35>:	mov    %eax,%ebx
   0x080484e3 <+37>:	call   0x80482e0 <puts@plt>
   0x080484e8 <+42>:	add    $0x10,%esp
   0x080484eb <+45>:	call   0x8048426 <vuln>
   0x080484f0 <+50>:	mov    $0x0,%eax
   0x080484f5 <+55>:	lea    -0x8(%ebp),%esp
   0x080484f8 <+58>:	pop    %ecx
   0x080484f9 <+59>:	pop    %ebx
   0x080484fa <+60>:	pop    %ebp
   0x080484fb <+61>:	lea    -0x4(%ecx),%esp
   0x080484fe <+64>:	ret    
End of assembler dump.
(gdb) disass vuln
Dump of assembler code for function vuln:
   0x08048426 <+0>:	push   %ebp
   0x08048427 <+1>:	mov    %esp,%ebp
   0x08048429 <+3>:	push   %edi
   0x0804842a <+4>:	sub    $0x20,%esp
   0x0804842d <+7>:	call   0x80484ff <__x86.get_pc_thunk.ax>
   0x08048432 <+12>:	add    $0x1bce,%eax
   0x08048437 <+17>:	lea    -0x24(%ebp),%eax
   0x0804843a <+20>:	movl   $0x67616c66,(%eax)
   0x08048440 <+26>:	movl   $0x436b617b,0x4(%eax)
   0x08048447 <+33>:	movw   $0x644d,0x8(%eax)
   0x0804844d <+39>:	movb   $0x0,0xa(%eax)
   0x08048451 <+43>:	lea    -0x24(%ebp),%eax
   0x08048454 <+46>:	mov    $0xffffffff,%ecx
   0x08048459 <+51>:	mov    %eax,%edx
   0x0804845b <+53>:	mov    $0x0,%eax
   0x08048460 <+58>:	mov    %edx,%edi
   0x08048462 <+60>:	repnz scas %es:(%edi),%al
   0x08048464 <+62>:	mov    %ecx,%eax
   0x08048466 <+64>:	not    %eax
   0x08048468 <+66>:	lea    -0x1(%eax),%edx
   0x0804846b <+69>:	lea    -0x24(%ebp),%eax
   0x0804846e <+72>:	add    %edx,%eax
   0x08048470 <+74>:	movl   $0x336b656e,(%eax)
   0x08048476 <+80>:	movl   $0x33443931,0x4(%eax)
   0x0804847d <+87>:	movb   $0x0,0x8(%eax)
   0x08048481 <+91>:	lea    -0x24(%ebp),%eax
   0x08048484 <+94>:	mov    $0xffffffff,%ecx
   0x08048489 <+99>:	mov    %eax,%edx
   0x0804848b <+101>:	mov    $0x0,%eax
   0x08048490 <+106>:	mov    %edx,%edi
   0x08048492 <+108>:	repnz scas %es:(%edi),%al
   0x08048494 <+110>:	mov    %ecx,%eax
   0x08048496 <+112>:	not    %eax
   0x08048498 <+114>:	lea    -0x1(%eax),%edx
   0x0804849b <+117>:	lea    -0x24(%ebp),%eax
   0x0804849e <+120>:	add    %edx,%eax
   0x080484a0 <+122>:	movl   $0x617a4344,(%eax)
   0x080484a6 <+128>:	movl   $0x2d343332,0x4(%eax)
   0x080484ad <+135>:	movw   $0x7d53,0x8(%eax)
   0x080484b3 <+141>:	movb   $0x0,0xa(%eax)
   0x080484b7 <+145>:	nop
   0x080484b8 <+146>:	add    $0x20,%esp
   0x080484bb <+149>:	pop    %edi
   0x080484bc <+150>:	pop    %ebp
   0x080484bd <+151>:	ret    
End of assembler dump.
(gdb) break *vuln +145
Breakpoint 1 at 0x80484b7
(gdb) run
Starting program: /root/Desktop/re_me 
There's a flag here somewhere? 

Breakpoint 1, 0x080484b7 in vuln ()
(gdb) x/s $esp
0xffffd804:	"flag{akCMdnek319D3DCza234-S}"
Rajah 2: gdb

Flag: flag{akCMdnek319D3DCza234-S}


Ok, selesai. Insya Allah kot free nanti abam bikin riteup untuk challenge lain pulak, barangkalilah! hehehe.

DEFCON – Red Team Village CTF – Forensics Challenge Walkthrough

Salam, Jumaat lepas team h0f telah join DEFCON – Red Team Village CTF (Qualifications round), dan kami telah membuat beberapa Challenge yang agak mudah, memandangkan kesuntukan masa dan komitmen lain, kami main yang surface saja. Hehehehe. So ini merupakan Unofficial Writeup bagi Challenge tersebut.

Forensics Challenge Walkthrough

Abam akan share Write-up yang simple(maleh nak cito panjang-panjang na, hahaha) berkaitan Forensics Challenge, berikut adalah Challenges yang telah dapat kami dapat selesaikan.

Rajah 1: Forensics Challenge

Tom Nook – 1A – Internet Traffic

Bagi Tom Nook Challenge ni, peserta di minta untuk membuat analisa terhadap satu pcap file (TomNookInternetTraffic.pcap)

Solutions:

Rajah 3: Follow HTTP Stream

Flag: TS{TomNookUsesTheInternet}


Tom Nook – Internet Traffic – Part 1B

Rajah 4: Tom Nook – 1B

Solutions:

Rajah 5: Analyze pcap

Flag: 192.168.1.47


Tom Nook – Internet Traffic – Part 1C

Rajah 6: Tom Nook – 1C

Solutions:

Rajah 7: Analyze pcap

Flag: 161.35.110.243


Tom Nook – 1D – Internet Traffic

Rajah 8: Tom Nook – 1D

Solutions:

Rajah 9: Follow HTTP Stream

Flag: SecretACBankStatement.zip


Tom Nook – 1E – Internet Traffic

Rajah 10: Tom Nook – 1E

Solutions:

  • Export HTTP objects (fail zip)
  • Crack fail zip
fcrackzip -b -D -p /usr/share/wordlists/rockyou.txt -u ./123.zip
Rajah 11: fcrack

Flag: monkey123


Tom Nook – Internet Traffic – Part 1F

Rajah 12: Tom Nook – 1F

Solutions:

  • Extract zip file yang telah kita perolehi tadi (pass: monkey123)
  • Buka fail pdf berkenaan
Rajah 13: extracted pdf

Flag: TS{TomNookDrivesTheBoat}


Just a nice picture

Solutions:

Muat turun fail ctf.jpg dan laksanakan command berikut:

binwalk -e ctf.jpg

cd _ctf.jpg.extracted

ls

cat flag.txt (fail kosong)

unzip 46FE7.zip (ada password)

fcrackzip -b -D -p /usr/share/wordlists/rockyou.txt -u ./46FE7.zip
Rajah 14: Just a nice picture

Flag: flag{f93kfaskdif92}


Ok, selesai. Insya Allah kot free nanti abam bikin writeup untuk challenge lain pulak, barangkalilah! hehehe.

akses ke HTB machine

Salam geng, tanpa membuang masa meh kita tengok macam mana kita nak akses HTB machine untuk kita laksanakan aktivitas pengodoman kita. Hahaha.


Pertama sekali kita login di : https://www.hackthebox.eu/login

Abam guna classic UI jer, yang baru ni resource nya tinggi skit, mungkin khayalan abam saja kot, hehehe.

Rajah 1: HTB Dashboard

Klik pada menu Access tu gais, kemudian klik button [Connection Pack] atau [Regenerate], Regenerate ni sebenarnya kalau Connection Pack yang kita download tu problem.

Rajah 2: Connection Pack

HTB menggunakan OpenVPN connection file, jadi kita kena setup OpenVPN client. Korang bolehlah download dan setup melalui URL berikut : https://openvpn.net/community-downloads/

Kemudian kita import file Connection yang kita download seperti dalam Rajah 2, import menggunakan OpenVPN client yer gais, lepas tu tekan menu connect. Pastikan VPN kita dah connected.

Rajah 3: Import Connection Pack

Klik pada menu Machines -> All kemudian klik pada mana-mana machine yang kita nak cuba.

Rajah 4: Machine info

Kita try ping ip machine berkenaan untuk pastikan ada connection, dan kita dah boleh start hackin 🙂

Rajah 5: Check connection

Cuma dalam environment VPN ni kita kena hati-hati jugak, kadang ada ore acu cuba try test machine kita plop. Huhuhu. Barangkalilah!

pendaftaran hack-the-box(HTB)

Salam semua, kali ni abam nak share macam mana kita nak register Hack The Box untuk kita hands on skill Penetration Testing.

Hack The Box is an online platform allowing you to test your penetration testing skills and exchange ideas and methodologies with thousands of people in the security field

Tanpa membuang masa, korang boleh akses page https://www.hackthebox.eu/invite untuk dapatkan [Invite Code] suapaya proses registration dapat dibuat. Pertama sekali kita klik pada button Want Some Help? [Click Here] untuk mendapatkan Hint yang berkaitan:

Rajah 1: Hint – You could check the console…

Dari Hint yang dipaparkan, kita perlu mendapatkan maklumat lanjut melalui Console Tab – Inpect Element Web Browser (abam guna Chrome). Code untuk tujuan invite code ni ada dalam file : /js/inviteapi.min.js

Rajah 2: /js/inviteapi.min.js (the invite code generator?) reference

Kita cuba buka file /js/inviteapi.min.js ni dan tengok apa function yang ada, melalui code berkenaan kita dapat kenalpasti beberapa function, kita cuba analisa sikit makeInviteCode funtion ni dalam Console tab nanti.

Rajah 3: /js/inviteapi.min.js content

Taipkan makeInviteCode dalam console tab

Rajah 4: function makeInviteCode
function makeInviteCode(){$.ajax({type:"POST",dataType:"json",url:'/api/invite/how/to/generate',success:function(a){console.log(a)},error:function(a){console.log(a)}})}

Daripada code function makeInviteCode(), kita dapati :

  1. Perlu buat POST request
  2. url : /api/invite/how/to/generate

Jadi kita boleh mula buat requesr berkenaan, kita boleh edit request pada any interception proxy (burp dll) atau membuat raw request (abam guna curl)

curl -XPOST https://www.hackthebox.eu/api/invite/generate
Rajah 5 : Invite code is encrypted

Kita dah dapat response dan Invite Code yang diperlukan, tapi code berkenaan di encode, kalau kita tengok balik code di encode dengan base64 (berdasarkan tanda padding kat belakang skali)

TFhPSVYtTk9aSUItRkJQTEEtUlNSTVUtU1ZGWVU=

Kita hanya perlu decode balik dari base64 ke plain text dan kita sudah dapat Invite Codenya, bolehlah kita proceed untuk register HTB.

Lepas dah register korang boleh lah login, kat bawah ni gambar platform baru (masih beta), boleh lah try tengok dan baca part Introduction, dan lain-lain, lepas tu moh join kita hack the box. Hihihi. Barangkali lah!

Happy hackin gais 🙂

kali-linux WSL Windows 10

Salam semua, kali ni abam nak share berkenaan seup kali linux menggunakan WSL(Windows Subsystem for Linux). Windows 10 mempunyai satu ciri di panggil “Windows Subsystem for Linux” (WSL) yang membolehkan pengguna menjalankan Linux secara terus dari OS Windows 10. Ini menarik geng, kita dapat menjimatkan resource berbanding kita menggunakan Virtual Machine manager macam Virtual Box, VM Player dan seumpamanya.

Kita boleh download Kali Linux melalui Windows App Store untuk tujuan ini, walaubagaimanapun kali linux berkenaan adalah Bare Bone, bermakna tiada pre-installed tools di dalamnya, untuk itu korang kena setup sendiri tools yang korang nak gunakan. OK, jom kita tengok macam mana nak setup.


Pastikan OS Windows 10 anda dikemaskini dengan update terkini.Runkan Windows Powershell sebagai administrator, kemudian runkan command berikut untuk enablekan WSL :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Rajah 1 : Setelah runkan command di atas, restart pc anda

Buka Microsoft Store, search Kali Linux dan tekan butang Get

Rajah 2 : Kali Linux – Microsoft Store

Buka command prompt dan taipkan kali, kemudian setupkan username dan password yang korang nak. Sekarang ni korang dan boleh gunakan kali linux melalui windows korang.

Rajah 3 : Basic setup – Kali WSL

Kemudian runkan command berikut untuk update serta install gui pada kali linux:

sudo apt update && sudo apt upgrade -y

sudo apt install kali-desktop-xfce -y

sudo apt-get install xfce4-terminal

sudo update-alternatives --config x-terminal-emulator
#select xfce4-terminal

Kita install xrdp supaya kita boleh akses GUI kali linux dengan menggunakan command berikut:

sudo apt install xrdp -y

sudo service xrdp start

Sekarang kita try RDP ke kali linux, gunakan Windows Remote Desktop Client (localhost:3390) pada run option taipkan mstsc.

Rajah 4 : RDP Session

Memandangkan kali linux ni Bare Bone, kita akan setup dan install tools secara manual(abam nak buat testing kat site yang guna joomla, adess):

#nikto
sudo apt-get install nikto

#cmsscan
sudo apt-get install git
sudo apt-get install rubygems build-essential

sudo apt-get install python3-pip
sudo apt-get install virtualenv

git clone https://github.com/ajinabraham/CMSScan.git
cd CMSScan
./setup.sh

./run.sh

CMSScan in action gais

Rajah 5 : CMSScan
Rajah 6 : CMSScan – Results

Ada beberapa kekangan bila kita guna Linux Subsystem dalam Windows ni, seperti contoh kalau guna nmap akan keluar error could’nt open raw socket dan seumpamanya la, WSL buat masa ni tak banyak support untuk raw sockets.


Kalau korang ada issue untuk update, boleh try repo lain, abam guna repo ni untuk update kali

deb http://kali.cs.nctu.edu.tw/kali kali-rolling main contrib non-free

Sekian dulu untuk kali ni, Assalamualaikum semua.

VirtualBox – Extend Disk Size

Salam semua, salam PKPP kepada korang. Berbulan dah kami tak update blog ni, maklumlah agak bz dengan macam-macam urusan kan. Kali ni abam nak share macam mana nak extend size virtual disk dalam VirtualBox. Isunya abam ada setup satu windows VM untuk tujuan testing, lama kelamaan, saiz yang mula-mula abam allocate tu dah tak cukup, so nak kena extend size la. Tanpa membuang masa, jom kita tengok macam mana nak buat benda ni.


Buka menu Settings pada Virtual Machine yang kita nak extend disknya tu, Klik pada Storage, kemudian dibawah Controller : SATA, right click pada vdi berkenaan dan tekan Remove Attachment. (Saiz sekarang ni 100GB abam nak increae jadi 250GB).

Rajah 1 : Remove Attachment

Next, korang buka folder VirtualBox, untuk kes abam pathnya adalah C:\Program Files\Oracle\VirtualBox. Bukak command prompt dari folder berkenaan dan runkan command berikut:

VBoxManage.exe modifymedium "<path_vdi>" --resize <saiz>
#Contoh:
VBoxManage.exe modifymedium "D:\my_vm\gh1mau's claw\gh1mau_s claw.vdi" --resize 250000
Rajah 2 : Resize Disk

Bila kita check settings, kelihatan saiz disk telah ditambah.

Rajah 3 : VM Settings

Lepas tu kita boleh startkan VM kita dan semak size Hard Disk yang telah kita resize tadi.

Rajah 4 : HDD Size

Sedikit peringatan :

  1. Pastikan anda backup atau clone VM file anda sebelum membuat proses resize hdd ni
  2. Pastikan tiada sebarang snapshot pada VM yang kita nak resize

Ok yer geng, sehingga bertemu lagi di posting yang akan datang, Insya Allah.

Fundamental of Incident Response and Handling (Part 1)

Hampir genap 10 tahun menghadap insiden-insiden sekecil-kecil dari web defacement sehinggalah Advance Persistant Threat, ada satu penyataan yang amat menjengkelkan bila orang cakap “macam mana nak baca log ek?

Jadi mari kita mendalami bidang Incident Response & Handling dengan lebih terperinci..sebelum tu, berikut adalah pesanan penaja:

Bosan la jadi IRT, jadi Pentester lagi glamer & bergaya macam Neo dalam Matrix

Beruk Budak Baru Nak Up

Cyber version of Sherlock Holmes & Dr. Watson

Berdasarkan definisi dari SANS, Incident Handling (IH) adalah fungsi logistik, komunikasi, koordinasi dan merancang yang diperlukan dalam memastikan sesuatu insiden dapat diselesaikan dalam keadaan lancar dan efisyen. Manakala Incident Response (IR) pula adalah semua yang berkaitan komponen teknikal yang diperlukan untuk menganalisis dan mengawal sesuatu insiden.

Ya, IR & IH sebenarnya merupakan dua bidang kuasa yang berbeza namun merupakan hubungan simbiosis bagi memastikan sesuatu insiden itu dapat dikendalikan dengan tertib. Dengan kata lain, kerja IRH ni sebenarnya cam gandingan Sherlock Holmes (IR) dan Dr. Watson (IH) dalam merungkai misteri pencerobohan dan serangan siber yang berlaku didalam sesuatu rangkaian dan server terbabit. Bunyi gempak kan? Ini sebenarnya bukan rekaan kerana kes-kes yang melibatkan serangan siber selalunya agak kompleks dan memerlukan tahap kefahaman, penaakulan, pemerhatian dan menghasilkan kesimpulan yang tinggi sepertimana Sherlock Holmes & Dr Watson mengendalikan kes-kes pembunuhan yang kompleks. Tak caya cuba sebut nama syarikat Mandiant, confirm org tabik spring kot kalau dengar. Bukan kaleng-kaleng team tu buat IRH.

Untuk kali ini kita tengok dulu tugas-tugas IH dahulu sebab ni selalu geng-geng bos punya kerja.

INCIDENT HANDLING 101

Ada satu kata pujangga yang menyebut “a breach is not a disaster, but mishandling it is“. Disini dapat dilihat kegagalan mengendalikan sesuatu insiden itu merupakan kunci utama ianya bertukar dari insiden menjadi musibah.

Bagi IH, tugas utamanya ialah dalam mengenalpasti kejadian, langkah-langkah yag perlu diambil dan juga pelan yang sesuai dalam mengendalikan insiden. Mereka juga bertanggungjawab dalam memastikan aspek pengurusan dan proses mengangkat penemuan/keputusan ke pihak atasan adalah jelas dan teratur. Sebab tu geng-geng IH ni takleh bagi kat orang yang asyik blur-blur atau selalu lepas tangan sebab nanti IR yang akan terbeban disebabkan IH yang tidak kompeten dalam menyampaikan maklumat yang diperlukan oleh pengurusan atasan.

Jika dikaitkan dengan pekeliling penubuhan CERT Agensi, jawatan yang dicadangkan untuk menjadi IH adalah Pengurus CERT yang juga menyandang jawatan ICTSO. Ini kerana bidang tugas ICTSO itu sendiri merangkumi mengenalpasti insiden, mengesahkan dan mengistiharkan insiden, menetapkan tahap keparahan & kritikal, mengumpul maklumat, menghasilkan laporan dan mengangkat cadangan/pelan ke pengurusan tertinggi. Dengan kata lain, jawatan ICTSO memerlukan personel yang mantap dalam segi pengurusan dan membuat keputusan. Dapat yang lemau mmg “sadakallahhalazim”

KERJA MENGURUS SAJA KA ?

Sebenarnya kerja IH ni dari fasa Perancangan pon dah ada kerja bersepah. Salah satunya ialah kena sediakan pelan yang bersesuaian dengan keadaan organisasi dalam mengendalikan insiden yang tahap rendah sehingga tahap kritikal. Ini juga termasuk Business Continuity Plan dan Disaster Recovery Plan. Pelan-pelan tersebut kena mengambil kira kos makan/minum, penginapan, peralatan/perisian yang diperlukan, duit kecemasan, keperluan mengupah pihak ketiga dan juga hal-hal berkaitan komunikasi korporat serta kebersihan dan fasiliti kesihatan bagi staf yang terlibat. Nampak cam pelik kan sampai tahap kebersihan kena jaga dgn bekalkan kit kebersihan yang mengandungi ubat gigi, deodorant, sabun dan lain-lain tapi kena ingat, takkan staf-staf yang berjaga malam tu tak mandi sambil badan berbau tengit nak bagi masuk masuk mesyuarat pagi? Keterampilan diri mereka juga merupakan aspek yang perlu dijaga oleh IH bagi mengelakkan imej organisasi tercalar kerana tiada profesionalisme. Nampak lawak tapi itulah realitinya menjadi IH ni, bukan senang nak galas watak Dr. Watson sebenarnya sebab anda perlu menjadi seseorang yang banyak akal & pintar!

Tenang it Perlu

Bagi memastikan IH ini dapat menjalankan tugas dengan cemerlang, keterlihatan atau Visibility itu amatlah diperlukan bagi memudahkan mereka dalam membuat perancangan & penguruskan hal-hal berkaitan insiden dan pelan yang berkaitan. Keterlihatan disini bukan bermakna teknikal sahaja, tapi melibatkan proses, prosedur dan juga peraturan dan undang-undang yang terpakai bagi organisasi. Kalau ditanya berapa banyak peralatan dalam rangkaian pon IH takboleh jawab, mmg bungkus balik awal la kalau bagi status update ke Ketua Jabatan, tak tanya lagi apa yang boleh kena saman bila ada kebocoran data.

PENUTUP & AKAN BERSAMBUNG….

Secara ringkasnya beban tugas IH ini lebih kepada pengurusan baik insiden, staf ataupun organisasi dalam menghadapi sesuatu insiden atau ancaman siber. Jadi ianya perlulah dilantik dari golongan yang mempunyai ciri ketangkasan, kritis dan kreatif dalam menyelesaikan sesuatu masalah yang unik. Kalau anda dilantik tapi tiada ciri-ciri diatas, maka ada baiknya minta tukar ataupun lebih baik tingkatkan modal insan diri sendiri supaya tidak berlaku zalim terhadap staf-staf bawahan terutamanya IR.

Post sambungan akan aku sentuh mengenai IR dan mungkin akan ada post khas berkenaan teknik asas analisis log seperti Sherlock Holmes yang boleh dijadikan bahan rujukan bila ada kes. Takdak la asyik cakap “tak reti baca log” memanjang iye dok?