31 May 2012

netcat server

server:
while true; do echo “Leave me alone” | netcat -l -p 1234 -w10; done

client:
echo "dari client" | nc -uvv 192.168.1.50 1234

30 May 2012

libemu

emu_cpu_parse()  ->  to get/read next instruction(disassemble at eip)
emu_cpu_step() -> /* call the function */ (simulate the instruction in libemu)

rujuk fail libemu/src/emu_cpu.c, baris 895:
int32_t emu_cpu_run(struct emu_cpu *c)
{
int steps=0;
while (emu_cpu_parse(c) == 0)
{
// printf("%s \n", c->instr_string);

if ( emu_cpu_step(c) != 0 )
break;

steps++;
}
// printf("%s \n", emu_strerror(c->emu));
return steps;
}

sctest

sctest perlu shellcode dalam bentuk binary.

1) direct echo
echo -e '\xb8\x6d\x13\x86\x7c\xff\xd0\x31\xc0' | ./sctest -vvv -Ss 10

2) dari file
   nasm -f bin -o gadget.bin gadget.asm
   ./sctest -vvv -Ss 10 < gadget.bin

-vvv (triple v) >> print assembly code sekali

ps: parameter S besar dahulu sebelum s kecil. kalau terbalik tak kluar output


3) graff
  parameter -G
   ./sctest -vvv -Ss 10  -G graff.dot < gadget.bin
   dot graff.dot -Tpng -o graff.png

29 May 2012

siapa dulu: tcpdump atau firewall

tcpdump akan capture packet dulu sebelum firewall engine.

Jadi, walaupun firewall rules nak drop suatu packet tertentu, tapi tcpdump akan terlebih dulu capture dan display pada user.

tested on: openbsd dan pf

#ps: agreed by fatah <26feb2015>

24 May 2012

http 500 error


wget dpt:
HTTP request sent, awaiting response... 500 Internal Server Error
2012-05-24 10:00:56 ERROR 500: Internal Server Error.

file error_log dlm current dir:
[23-May-2012 20:02:15] PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 72 bytes) in /home4/haxxx/public_html/xxxx.com.my/xxx/libraries/joomla/database/database/mysql.php on line 462

penyelesaian:
file php.ini
memory_limit = 96Mb

 ----------------------------------

Pernah berlaku, error terus keluar 500. tak de clue lain.
Kali terakhir, 'jos_session is marked crashed and need to be repair'

lepas repair terus ok

18 May 2012

assembly: call to hardcoded address


a)   mov eax, 0x7c81CDDA
      call eax

vs

b)  call 0x7c81CDDA

Nampak macam sama. Tapi sebenarnya tidak.
Untuk a, selepas call eax, eip = 0x7c81CDDA

Untuk b selepas call, eip = 0x7cc33dda

Utk buat call secara hardcoded ke alamat 0x7c81CDDA:
    call 0x7C405DDa

Ada offset sebanyak 41700A.

Di uji menggunakan libemu(sctest)
Di kompil guna nasm

Bagaimana libemu tahu winapi mana yang shellcode panggil

libemu hanya boleh tahu berkenaan winapi yang shellcode gunakan jika shellcode itu portable. Kerana shellcode yang portable tak 'hardcoded' alamat winapi yang nak digunakan.
shellcode akan gelintar(parsing) 'PEB' yg ada dalam PE header utk dptkan alamat winapi.
libemu akan feed PEB ini, yg mengandungi setiap alamat winapi.

Biasanya alamat winapi yang dijumpai akan di simpan dalam eax.
Seterusnya call eax akan execute winapi yang dikehendaki.

16 May 2012

git merge dan conflict

Kalau tak nak merge conflict, cuma nak ambil local copy, guna --ours. 
Kalau nak guna remote guna --theirs
git checkout --ours # checkout our local version of all files

Nak diff antara dua branch
git diff master origin/master

Nak merge current branch dengan remotes/origin/master
git merge origin/master


Nak sycn github repository dengan Original(fork dari) Master Repository
git remote add upstream git://github.com/pemula/projek.git
git fetch upstream
git merge upstream/master
#selesaikan conflict, jika ada
git push origin/master 

15 May 2012

pack/unpack


Apa maksud pack(python)


Compare to C, in Python, the data like list may not be stored as contiguous chunk of bytes.

C variable
     +-----+         +--------+
     |array|-------> |10|9|2|3|
     +-----+         +--------+
                     contiguous bytes

Python variable

     +-----+         +-------+
     |array|-------> |.|.|.|.|
     +-----+         +-------+
                      | | | |
                      | | | |
                     10 9 2 3


To handle them, it is important to convert python values to "C" structs, i.e pack them as contiguous bytes of data or dissemble a contiguous chunk of bytes to Python objects.



ref>> http://pyfunc.blogspot.com/2010/09/python-and-binary-data-part-3.html

10 May 2012

tanya arp utk next nic




      |
      | (eth0)
    -----
   |  A  |
    -----
      | (eth1)
      |
      |
      |
      | (eth0)
    -----
   |  B  |
    -----

Komputer A
  • eth0 10.0.1.1 
  • eth1 10.0.1.2 


Komputer B
  • eth0 10.0.1.3 


Soalan:
  • Kalau B ping 10.0.1.1, ada reply atau tak? 


 Jwp:
  • Ada. Bila arp request dari B sampai ke eth1(A), os(pada network layer) akan ambil kira semua ip yg di pegang. Bukan hanya ip pada eth1 sahaja. 
  • (Menarik) Dlm ARP table pada B, MAC utk Ip 10.0.1.1(yg ada pada eth0)  adalah MAC address eth1

vcenter belakang NAT

Ada masalah kalau vCenter dan ESX berlainan subnet dan dihubungkan menggunakan NAT(Network Address Translation)

1) Kena tambah kat ESX-server:/etc/opt/vmware/vpxa/vpxa.cfg
 <preserveServerIp>true</preserveServerIp>

eg:

    <preserveServerIp>true</preserveServerIp>
    <serverIp>10.0.15.1</serverIp>
    <serverPort>902</serverPort>



Ini akan mengelakkan ditukar semasa vCenter connect ke ESX.
ref>> http://www.vmskills.com/2010/09/using-nat-between-vcenter-server-system.html



2) Kena forwardkan port 902 utk heartbeat. ESX akan hantar degupan jantung ke vCENTER. Destination asal paket adalah pada NAT gw port 902. Kena buat DNAT utk forwardkan destination kepada vCenter.

   Jika pada NAT gw dah MASQUERADE flow dari ESX ke vCENTER, akan timbul masalah kerana paket yang sampai di vCenter kelihatan berasal dari NAT gw, bukan dari ESX original ip.

   Cara nak atasi, insert(-I) new rules pada POSTROUTING tbl nat sebelum MASQUERADE,  untuk ACCEPT ip from ESX. Arahan ACCEPT akan buatkan packet 'TIDAK' di MASQUERADE.
(this is highly technical, semoga faham apa yg dituliskan)

09 May 2012

esx role

Sesuai untuk diurus sendiri oleh tuan punya virtual host masing-masing.

  1. Cipta satu role dengan privileges spt di atas. C
  2. Cipta satu group.
  3. Masukkan user dalam group
  4. Click pada 'host', dan 'Add Permission' pada 'Permission' tab. Tambah Group dan Roles yang berkenaan.
ps:/ munkin kena choose all pada Option Virtual machine(dlm gambar di atas). Try on your own.

07 May 2012

github key

cara nak capai github tanpa guna default private key.

tambah pada ~/.ssh/config:

Host gh
        Hostname github.com
        User git
        IdentityFile ~/.ssh/somekey


seterusnya:
$  git clone ssh://gh/username/repo.git
 

03 May 2012

convert assembly to opcode

1) gadget.asm
;gadget.asm
[SECTION .text]
; set the code to be 32-bit
; Tip: If you don't have this line in more complex shellcode,
; the resulting instructions may end up being different to
; what you were expecting.
BITS 32
global _start
_start:
POP EAX
POP EDI
POP ESI
POP EBX
POP EBP
RETN


2) Compiling assembly code
# nasm -f bin -o gadget.bin gadget.asm


3) Obtaining shellcode

#objdump -b binary -m i386 -D gadget.bin
atau
# x86dis -e 0 -s intel -f gadget.bin
00000000 58                             pop     eax
00000001 5F                             pop     edi
00000002 5E                             pop     esi
00000003 5B                             pop     ebx
00000004 5D                             pop     ebp
00000005 C3                             ret
 atau
# xxd -i gadget.bin
unsigned char gadget_bin[] = {
  0x58, 0x5f, 0x5e, 0x5b, 0x5d, 0xc3
};
unsigned int gadget_bin_len = 6;


ref>> http://www.projectshellcode.com/node/18