Category Archives: Blog

Scanning AP and Orinoco-based WIFI

WiFi ที่ใช้ชิป Orinoco/Hermes หลังจาก monitor mode ได้ ก็ทำ scanning หา access point ได้พักนึงแล้ว (น่าจะราวๆ kernel >= 2.6.14 หรือ 2.6.15) โดยใช้คำสั่ง

# iwlist eth1 scanning
eth1      Scan completed :
          Cell 01 - Address: 00:80:C8:AD:1A:8D
                    ESSID:"CoE_Office"
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Signal level:-36 dBm  Noise level:-92 dBm
                    Encryption key:off
          Cell 02 - Address: 00:0B:0E:1D:82:00
                    ESSID:"kku-wifi"
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Signal level:-63 dBm  Noise level:-85 dBm
                    Encryption key:off
          Cell 03 - Address: 00:0B:0E:1D:82:02
                    ESSID:"kku-wifi-s"
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Signal level:-63 dBm  Noise level:-85 dBm
                    Encryption key:on
...

ก่อนจะ scan อาจจะต้อง

# iwconfig eth1 essid off

ซะก่อน .. ไม่งั้นอาจจะ scan ไม่เจอ หรือเจอแค่ตัวที่ associate อยู่ตัวเดียว

QEMU Virtualization

Full virtualization

ในที่สุด QEMU ก็ทำ full virtualization เสียที เร็วขึ้นเป็นกองเลย .. โหลด โหลด qemu >= 0.8.1 + kqemu >= 1.3.0pre7 มาก่อน จากนั้นก็มา build กัน สำหรับบน debian/ubuntu ลง build-essential + gcc 3.x + libsdl-dev ไว้ก่อน ขาดเหลืออะไรก็หามาใส่ให้ครบๆ ละกัน จากนั้นก็

tar -xzf  qemu-0.8.1.tar.gz
cd qemu-0.8.1
./configure --cc=gcc-3.4
make
sudo make install

ใส่ออปชันนิดหน่อย ให้ใช้ gcc 3.x คอมไพล์ เพราะ QEMU คอมไพล์กับ gcc 4 แล้วมีปัญหา (QEMU จะเตือนถ้าพยายามใช้ gcc 4.x)

เสร็จเรียบร้อย ทีนี้ก็เป็นคิวของ kqemu .. อ่อมันเป็นเคอร์เนลมอดูล อาจจะต้องลง kernel-header ด้วยนะ

tar -xzf kqemu-1.3.0pre7.tar.gz
cd kqemu-1.3.0pre7
./configure
make
sudo make install

อ่อ ไม่ต้องแปลกใจว่าทำไมไม่ใช้ --cc=gcc-3.x เพราะ keqmu จะคอมไพล์เป็นเคอร์เนลมอดูล เวลาจะคอมไพล์ควรจะใช้ gcc ตัวเดียวกับเคอร์เนล ไม่ใช่ตัวเดียวกับ qemu .. ทีนี้ก็

$ sudo modprobe kqemu major=0

อาจจะต้อง chmod เล็กน้อย

$ sudo chmod 666 /dev/kqemu

ทีนี้ก็ใช้ virtualization ได้แล้ว โดยใส่ -kernel-kqemu

$ qemu -kernel-kqemu -hda winxp.img

แน่นอนพอเป็น virtualization host OS กับ guest OS จะต้องรันบนแพล็ตฟอร์มเดียวกัน และตอนนี้ QEMU virtualization ไม่ได้สนับสนุน OS ทุกตัว โดยเฉพาะตัวเก่าๆ .. ที่ลองใช้งานผ่าน virtualization ได้ก็มี Windows 2000/XP, Ubuntu 5.10, Fedora Core 2, FreeBSD 4.11 OS ที่ใหม่กว่านี้น่าจะใช้ virtualization ได้ทุกตัว

ทดสอบหยาบๆ บูต OS หลายๆ ตัวบน peorth (Pentium III Mobile 1 GHz) เทียบระหว่างใช้ kqemu เฉยๆ (native memory management) กับ virtualization ก็ได้ผลตามตาราง (หน่วยเป็นวินาที)

Guest OS kqemu virtualization
Windows 2000 63 39
Windows XP 100+ 40
Ubuntu 5.10 204 80
FreeBSD 4.11 10 8

มีข้อสังเกตว่าเวลารัน qemu ปกติจะเห็น CPUID เป็น Pentium II ส่วน virtualization จะเห็น CPUID เป็น CPU ของเครื่องเลย .. ที่พบอีกอย่างคือผลของการปรับ real-time clock frequency .. qemu แนะนำว่าให้ใช้เคอร์เนล 2.6 หรือตั้ง max-user-freq = 1024 พอลองตั้งดูปรากฏว่าลินุกซ์กับบีเอสดีทำงานเร็วขึ้น ในขณะที่ Windows ช้าลงไปมาก โดยเฉพาะ Windows 2000 นั่นแทบบูตไม่ขึ้น และในทางตรงข้าม ถ้าใช้ max-user-freq เป็นค่า default (64) ลินุกซ์ช้าลงเล็กน้อย ส่วน Windows ทำงานเร็วกว่าเดิมเยอะจนเห็นได้ชัด … YMMV

Overlay Image

QEMU ทำ overlay image ได้ด้วยนะ .. หมายความว่าใช้ image ตัวนึงเป็น base ขณะทำงานถ้ามีการบันทึกข้อมูลที่ต่างไปจาก base จะบันทึกเก็บลง overlay image แทน เหมาะมากสำหรับใครที่ต้องการทดลองอะไรแผลงๆ (e.g. penetration test, virus/malware test) เพราะ base image จะคงเดิมไปตลอด ถ้าใช้จนระบบเละเทะก็ลบ overlay image ทิ้งแล้วสร้างใหม่ก็จะได้ระบบเฟรชๆ กลับมาโดยไม่ต้องติดตั้งกันใหม่ หรือจะทำ overlay image หลายๆ สำเนาจะได้จำลองเครื่องหลายๆ เครื่องพร้อมกันโดยไม่ต้องใช้ image โตๆ ก็ได้ .. แจ่มแมวมั่กๆ :D … วิธีสร้าง overlay image ก็ไม่มีอะไรยาก

$ qemu-img create -b winxp.img -f qcow winxp.ovl

ทีนี้เวลาทำงานก็โหลด overlay image แทน

$ qemu -kernel-kqemu -hda winxp.ovl

Networking

เมื่อเทียบกับเวอร์ชัน 0.7 กว่าๆ แล้ว QEMU รุ่นปัจจุบันจัดการระบบเครือข่ายได้ง่ายขึ้นและหลากหลายขึ้นเยอะ .. โดยปริยาย QEMU จะจำลอง DHCP, DNS, SMB server ให้ในตัวพร้อมกับ Firewall/NAT ให้เรียบร้อย guest OS บูตมาก็ใช้งานอินเทอร์เน็ตได้เลย โดย QEMU กำหนดให้ Firewall/NAT/DHCP ใช้ไอพีแอดเดรส 10.0.2.2 ส่วน DNS กับ SMB ใช้ไอพีแอดเดรส 10.0.2.3 และ 10.0.2.4 ตามลำดับ

กรณีที่ต้องการให้ host OS สามารถสื่อสารกับ guest OS ก็มี TAP interface เชื่อมได้

$ sudo modprobe tun
$ sudo chmod 666 /dev/net/tun
$ qemu -kernel-kqemu -net nic -net tap -hda freebsd6.ovl

บรรทัดแรกโหลดเคอร์เนลมอดูล tun สำหรับอินเทอร์เฟซ TUN/TAP จากนั้นก็ตั้ง permission เพื่อให้ user ใช้งาน TUN/TAP ได้ สุดท้าย เรียก qemu โดยใช้ -net nic (emulate NIC) และ -net tap .. อินเทอร์เฟซ tap0 บน host OS จะเชื่อมอยู่บน VLAN เดียวกันกับ emulated NIC ใน guest OS ตั้ง IP ให้อยู่ในเครือข่ายเดียวกันก็ติดต่อกันได้ .. QEMU ใช้สคริปต์ /etc/qemu-ifup คอนฟิก tap0 โหลดสคริปต์ได้จาก linux-test-x.x.x.tar.gz ถ้าไม่อยากโหลดไฟล์ใหญ่ๆ จะเขียนสคริปต์เองก็ได้

#!/bin/sh
sudo /sbin/ifconfig $1 192.168.0.1

สคริปต์นี้จะสร้างอินเทอร์เฟซ tapN และกำหนดไอพีแอดเดรส เป็น 192.168.0.1/24 ส่วนใน guest OS ตั้งไอพีแอดเดรสเป็น 192.168.0.x/24 ไอพีแอดเดรส 192.168.0.1 และ .2 ก็จะรับส่งข้อมูลหากันได้ .. เรื่อง network ของ QEMU ค่อนข้างยาว ถ้ามีโอกาสไว้ค่อยลงรายละเอียดกัน

ทิปเล็กน้อย

เวลาติดตั้ง Windows 2000 บน qemu ต้องใส่ออปชัน -win2k-hack ไปด้วย และถ้าจะติดตั้ง Windows 2000 หรือ XP ห้ามใช้ -kernel-kqemu ตอนที่ติดตั้งเพราะมันจะ BSOD (ติดตั้งให้เสร็จแล้วค่อยใช้ได้) ทั้ง Windows 2000 และ XP ขณะติดตั้งให้ขยับเมาส์ไปๆ มาๆ เรื่อยๆ หรือถ้ามีหน้าต่างแสดงผลก็ให้ลาก ไปๆ มาๆ ไม่งั้นเวลาติดตั้งไปเรื่อยๆ สักพักมันจะนิ่งไปเลย ไม่แฮงค์ ไม่แครช ไม่กินซีพียู หน้าจออัปเดตเรื่อยๆ แต่ไม่ติดตั้งต่อซะงั้น (ประหลาด :P) ..

ถ้าขี้เกียจ chmod 666 /dev/kqemu ทุกครั้ง เดิมใน Ubuntu จะเพิ่ม rule ใน /etc/udev/permission.d/ ตอนนี้มันไม่มีแล้ว ให้สร้างไฟล์ /etc/udev/rules.d/50-kqemu.rules แทน ตามนี้

# kqemu
KERNEL="kqemu", NAME="%k", MODE="0666"

ทีนี้เวลา modprobe kqemu udev จะตั้ง permission เป็น 666 ให้อัตโนมัติ ไม่ต้อง chmod เอง

QEMU เฉพาะเวอร์ชัน 0.8.1 ที่ทดสอบก็เร็วกว่า 0.7 ที่เคยใช้พอสมควรแล้ว พอทำ full virtualization เข้าไปอีกก็ทำงานได้เร็วใกล้ native มากขึ้นไปอีก น่าใช้ขึ้นอีกเยอะ :)

ผีหลอก!

แก๊งค์แมวๆ โดนผี(เสื้อ)หลอกไปถ่ายรูป ที่ สวนผีเสื้อ-สวนรถไฟ เมื่อปลายเดือนที่แล้ว เป็นที่สนุกสนาน :D

[nggallery id=59]

/me .. รูปลงไว้นานแล้วแหละแต่เพิ่งจะมา blog .. :P

V-Gear TalkCam

ที่บ้านมี v-gear talkcam อยู่ตัวนึง เลยเอามาลองใช้กับลินุกซ์ซักหน่อย .. เสียบสาย USB ปุ๊บ .. เงียบ .. สงสัยต้องออกแรงสักหน่อย เริ่มจาก lsusb ก็เห็นว่า

Bus 001 Device 003: ID 0ac8:0302 Z-Star Microelectronics Corp. ...

เอา ID ไปกูเกิ้ล ตามด้วยคำว่า linux .. เจอแวบๆ ว่าใช้ spca5xx ได้ อะฮ้า โหลดเลยครับ.. spca5xx คอมไพล์เป็นเคอร์เนลมอดูลได้เลย ลง kernel-header น่าจะพอ ไม่ต้องลงเคอร์เนลซอร์สมาแพตช์

เอาล่ะ ลงมือได้

$ tar -xzf spca5xx-20060501.tar.gz
$ make
$ sudo make install

เรียบร้อยแล้วก็ทดลองใช้งานกัน

$ sudo modprobe spca5xx

ไฟ V-Gear TalkCam ติดแล้ว … เปิด ekiga คลิกที่กล้อง ภาพก็ปรากฏ :D .. ใครจะซื้อกล้องรุ่นนี้มาใช้ก็อุ่นใจได้ละ :)

Good Bye Apache !

อัปเดตพอร์ตบน FreeBSD วันนี้ ปรากฏว่า mod_php4/5 มันหายไปแล้ว .. เช็ค /usr/ports/UPDATING ก็พบว่า มันโดน remove ออกไปจากพอร์ตจริงๆ เพราะ maintainer ต้องการ unify php4/5 ที่แตกไปหลายแพ็คเกจให้เหลือ แค่ php4/5 เพื่อตัดปัญหาทางเทคนิคบางอย่าง และลดภาระการดูแล

เลยได้ pkg_delete mod_php5 และ php5-extensions อีกกระบุงใหญ่ออกไป แล้วค่อยไปติดตั้ง lang/php5 แทน .. จริงๆ ใน make config ของ php5 สามารถเลือกคอมไพล์ apache module ก็ได้ แต่เห็นค่าปริยายมี cli + cgi และสนับสนุน fast-cgi ก็น่าจะลองดูสักหน่อย .. หลังจากติดตั้ง php5 แล้วค่อยมาติดตั้ง lang/php5-extensions ตาม

มาคิดอีกที ถ้าใช้ fast-cgi ทำไมต้องใช้ apache ด้วยล่ะเนี่ยะ (- -)a .. โรคชอบ mini ก็กลับมาอีก เว็บเซิร์ฟเวอร์เบาๆ มีให้ใช้หลายตัว e.g. thttpd, boa, lighttpd .. เห็น lighttpd โฆษณาว่า เล็ก เร็ว ปลอดภัย ฟีเจอร์ก็พอดีๆ กับที่ต้องการใช้ (e.g. userdir, vhost, fast-cgi, IPv6) กูเกิ้ลดูแล้วเรื่อง troubleshoot ก็พอจะอุ่นใจได้ .. ตัดสินใจ portinstall lighttpd ซะ .. คอนฟิกไม่ค่อยคุ้นแต่ก็ไม่ยากอะไร เสร็จสรรพก็ pkd_delete apache ออก .. ช่วงนี้ก็ลองใช้ lighttpd ดูสักพัก อย่างน้อยเวลาอัปเกรดพอร์ตก็ไม่ต้องคอมไพล์ apache ใหม่ครั้งละนานๆ :P

SSH Brute-Force Attack Still

จริงๆ เหตุการณ์ SSH brute-force/password guessing/dictionary attack นี่เกิดมา 2 ปีเห็นจะได้แล้วล่ะ ทุกวันนี้ก็ยังไม่มีทีท่าว่าจะลดลง คาดว่าใครที่ดูแลระบบยูนิกซ์และลินุกซ์ที่ใช้ SSH คงเจอกันถ้วนหน้า .. จริงๆ แล้วคงมีโอกาสไม่มากเท่าไหร่ที่จะโดนแจ๊คพ็อตเดารหัสผ่านถูก แต่ประมาทไม่ได้เหมือนกัน เจอ failed password for root ซัก 1-2000 ครั้งในวันเดียวมันก็ไม่ค่อยสบายใจเท่าไหร่ จะว่าไปแล้ว ส่วนใหญ่จะประสาทกินไปกับรายงาน failed password นี่แหละ (- -‘) .. อย่างไรก็ตาม มันก็พอจะมีวิธีปิดช่องในการโจมตี หรือลดโอกาสในการโจมตีได้หลายแบบ

  • วิธีที่ใช้อยู่เวลานี้คือใส่ AllowUsers หรือ AllowGroups ใน /etc/ssh/sshd_config บังคับให้ login ได้เฉพาะ user ที่อนุญาต .. ก็โชคดีที่เครื่องที่ดูแลทั้งหมดมี user ไม่เยอะ เครื่องที่มีเยอะก็ group ไว้ค่อยข้างดี .. สบายไป
  • อีกวิธี คือ ยกเลิกการใช้ password และ challenge-response authentication หันไปใช้ public-key authentication แทน โดยแก้ที่ /etc/ssh/sshd_config เหมือนกัน .. วิธีนี้วางใจได้แน่นอน แต่ไม่ค่อยสะดวกสำหรับผู้ใช้เท่าไหร่
  • อีกวิธีที่นิยมใช้กันก็คือติดตั้ง DenyHost ซึ่งจะตรวจสอบ log ถ้ามี login failed จาก IP เดิมๆ มันจะเอา IP ไปใส่ใน host.deny อัตโนมัติ

ชอบแบบไหนก็เลือกเอาได้ .. ถ้าไม่ชอบซักวิธีก็กูเกิ้ลหาวิธีอื่นเอาละกัน :)

FreeBSD EoL

วันที่ 1 มิ.ย. นี้ FreeBSD 4.10 จะครบอายุขัย และจะไม่มี support จาก FreeBSD Security Team อีกต่อไป แนะนำว่าใครที่ใช้อยู่ให้ย้ายไป FreeBSD 5 หรือ 6 แทน .. FreeBSD 5.4 ทีแรกก็จะหมดอายุขัยในวันเดียวกัน แต่เห็นว่าจะขยายไปถึงเดือนตุลาคม 2006 .. เวอร์ชันอื่นๆ โดยสรุปแล้วก็จะเป็นตามตารางนี้

Branch Release Type Release Date End of Life
RELENG_4 n/a n/a n/a Jan. 31, 2007
RELENG_4_10 4.10-RELEASE Extended May 24, 2004 May 31, 2006
RELENG_4_11 4.11-RELEASE Extended Jan. 25, 2005 Jan. 31, 2007
RELENG_5 n/a n/a n/a May 31, 2008
RELENG_5_3 5.3-RELEASE Extended Nov. 6. 2004 Oct. 31, 2006
RELENG_5_4 5.4-RELEASE Normal May 9, 2005 Oct. 31, 2006
RELENG_5_5 5.5-RELEASE n/a n/a May 31, 2008
RELENG_6 n/a n/a n/a May 2008 or later
RELENG_6_0 6.0-RELEASE Normal Nov. 4, 2005 Nov. 30, 2006
RELENG_6_1 6.1-RELEASE Extended May 9, 2006 May 31, 2008

ที่มา: FreeBSD SA

mrxvt

หา X terminal emulator ที่ตรงใจมานานแล้ว ในที่สุดก็เจอเสียที – mrxvt มีอะไรเจ๋งๆ หลายอย่าง

small footprint .. ps aux ดู ..

Terminal Emulator VSS RSZ
gnome-terminal 31592 12836
xterm 9548 3484
mrxvt 5880 3220

แสดงผลเร็วมาก .. ลอง time ls -la /usr/bin ..

Terminal Emulator Real User Sys
gnome-terminal 0m1.016s 0m0.064s 0m0.068s
xterm 0m3.055s 0m0.084s 0m0.044s
mrxvt 0m0.297s 0m0.108s 0m0.040s
  • tabbed terminal เหมือนกับ gnome-terminal ใช้ ctrl+shift+t เปิดแท็บใหม่ ใช้ alt+1, 2, 3, … เลือกแท็บ หรือจะใช้คีย์อื่นก็คอนฟิกได้
  • option เหมือนกับ xterm เกือบจะเป๊ะ ปกติใช้ xterm -ls -fg gray -bg black ก็ยก args มาใช้กับ mrxvt ได้เลย :D
  • option เด็ดๆ อีกหลายอย่าง เช่น translucent (ใช้กับ Xorg 6.8) มี -thai ด้วย .. และถ้ายอมตัดฟีเจอร์บางอย่าง (e.g., mouse scrolling, translucent) mrxvt-mini จะมี footprint เล็กกว่า mrxvt ธรรมดาอีกราวๆ 2 MB แต่ขนาดตัดฟีเจอร์แล้วก็ยังเยอะกว่า xterm อยู่ดี

apt-get install mrxvt หรือ mrxvt-mini ได้เน้อะ :D

Travel !

ช่วงนี้ชีพจรลงเท้า เดินทางแหลก กลับจากสัมมนาที่ จันทบุรี สักพักก็ไป สิกขิม-ภูฏาน กลับมาอยู่บ้านไม่ถึงสัปดาห์ก็ไปลุยตรวจฝึกงานหนึ่งสัปดาห์ ต่อด้วยประชุมและสัมมนาอีกหนึ่งสัปดาห์ ออนไลน์ติดๆ ดับๆ เป็นระยะๆ เพราะอยู่ไม่ค่อยเป็นที่ ไม่รู้จะไปออนไลน์ที่ไหน .. มานึกได้ทีหลังว่า แวะไปหาพี่หน่อยแถวร้านมนต์นมสดน่าจะได้ (ไปทวงพิซซ่าด้วย :P)

ว่าด้วยเรื่องสัมมนาสักหน่อย ไปงาน Thailand IPv6 Summit มาที่เซ็นทรัลโซฟิเทล จัดวันเดียวกัน ที่เดียวกัน กับงาน Open Standard ใกล้ชิดกันขนาดแชร์ผนังห้องกันนั่นแหละ มาเจอเสี่ยต้นกับจุ๊บแจงไปนั่งฟัง Open Standard ออกมาจากห้องทำหน้าเครียดๆ ว่าฟังยากเพราะสำเนียงอังกฤษสารพัดชาติ..แถมจริงๆ แล้วเนื้อหาคงไม่ใช่เรื่องใหม่สำหรับทั้งสองคน สงสัยว่าต้องอัดกาแฟแก้ง่วงพอดู (- -‘)

กลับมาที่งาน Thailand IPv6 Summit นับเป็นงาน IPv6 ที่ใหญ่ที่สุดในประเทศไทย และอาจจะใหญ่ที่สุดในประเทศแถบนี้ด้วย .. ก็ไม่น่าแปลกใจมากเพราะจริงๆ IPv6 Summit เป็นงานระดับนานาชาติที่วนจัดในแต่ละประเทศ และคราวนี้ก็วนมาประเทศไทย โดยมี Thailand IPv6 Forum เป็นแม่งาน .. เจอคนที่รู้จักหลายท่านเหมือนกัน .. โดยรวมก็โอเค keynote ก็น่าสนใจดี ฟังไปไอเดียก็กระฉูดไป จดแหลกเลย .. ปีนี้ไม่ต้องห่วงเรื่องหัวข้อโครงงาน น.ศ. แล้ว แต่จะมีคนมาทำหรือเปล่านี่สิ (- -‘) .. ที่สำคัญต้องเร่งทำงานส่ง UniNET IPv6 WG ด้วย ยังไม่ได้แตะเลย :P .. จริงๆ แล้วรอ Dapper Drake เพราะจะเอามาใช้งานหลายจุด เลยไม่ได้ลงมือทำอะไรซักที เพิ่งจะมารู้ว่า Dapper Drake เปลี่ยนเลขเวอร์ชั่นจาก 6.04 เป็น 6.06 ซะแล้ว (i.e., รีลีส 2006/06) .. ไม่รอแล้วงั้น .. T_T