Labs for Practice Penetration Testing

I found this page, it has a pretty good mind-map listing all available labs to practice your skill in doing penetration testing.
The link is

full image size please go to the original website

Vulnerable Web Applications [36 unique web applications]

  • OWASP Hackademic
  • Butterfly Security Project
  • Foundstone Hackme Bank
  • Foundstone Hackme Books
  • Foundstone Hackme Casino
  • Foundstone Hackme Shipping
  • Foundstone Hackme Travel
  • LAMPSecurity
  • Moth
  • WackoPicko
  • BadStore
  • WebSecurity Dojo
  • BodgeIt Store
  • hackxor
  • SecuriBench
  • SQLol

Vulnerable Operating System Installations [16+ unique OS setups]

  • Damn Vulnerable Linux
  • Metasploitable v1
  • Metasploitable v2
  • LAMPSecurity
  • UltimateLAMP
  • De-ICE, hackerdemia, pWnOS
  • Holynix
  • Kioptrix
  • CentOS

Sites for Downloading Older Versions of Various Software [3 sources]

  • Old Apps
  • Old Version
  • Exploit-DB

Sites by Vendors of Security Testing Software [8 unique sites]

  • Acunetix acuforum
  • Acunetix acublog
  • Acunetix acuart
  • Cenzic crackmebank
  • HP freebank
  • IBM altoromutual
  • Mavituna testsparker
  • Mavituna testsparker

Sites for Improving Your Hacking Skills [16 unique sites]

  • Google Gruyere
  • Hack This Site
  • Hacker Challenge
  • HackQuest
  • Hax.Tor
  • Hacker Test
  • OverTheWire
  • Root Me
  • Smash The Stack
  • TheBlackSheep and Erik
  • ThisIsLegal   
  • Try2Hack      
  • EnigmaGroup   
  • hACME Game    
  • Exploit Exercises
  • Hacking-Lab   


Ruby Script For Downloading OS X's Boot Camp

My situation was to installing a Windows7 on to Mac Book Pro 13".
It should be doing fine because of the Boot Camp application that pre-installed in every OS X (in /Applications/Utilities) and it will need just few clicks to be done. Unfortunately, during the process, the BootCamp application needs to download Boot Camp drivers (they are Mac devices' driver for Windows) directly from Apple website and I can't download it because of bad internet access. Another way around is to skip the download, and use OS X installation DVD to install the drivers into Windows when it finishes installation. Somehow the MacBook I got doesn't come with any OS X Lion DVD. I can't do it this way.

Then I searched on the Internet for a way to download the drivers directly (trying to by-pass the application). I found nothing useful on Apple website. Apple's download page only has Boot Camp update files but not the actual installation file for the first-time users. No hope in doing it for me.

Further I searched, I found this blog. It has a pretty detail information on how to directly download the Boot Camp drivers. However, there is a step that would takes me a lot of time to do it if I have to do it manually. Therefore, I wrote this script for doing the heavy task for me.

Let me describe the basic process first:

  1. First, you need to see the model of your Mac, go to "Apple menu" -> "About this Mac" -> "More Info…" -> "Hardware". Remember the model and number (e.g. "MacBookAir3,1"), it will be use later. 
  2. you need to download this file . It's a Mac update file list.
  3. Open the file in a good memory-management text-editor application, since the file is quite large for Notepad. (the file's size is 2.1 MB, and it could crash Notepad)
  4. search for a URL in the file that has word BootCampESD.pkg in it. And keep all matched lines.
  5. For each location of the matched line, in few lines below it, there is another URL that has the word "English.dist" (make sure the version (041-XXXX) from both URL are matched)
  6. Use a browser to go to .dist URL, it will contains javascript at the top of the HTML. On the top of the HTML page, there is a line contains information of the model that needs this download, such as:  var models = ['MacBookAir3,1','MacBookAir3,2',];
  7. Check to see if your model:
    1. Matches: download the .pkg file( it would be around ~600 MB), then proceed to next step (8)
    2. doesn't match what's in the Javascript, both these .dist and .pkg can be ignore. And repeat from step 4. again until there is a match
  8. From the file "BootCampESD.pkg", use 7zip( to browse into the file under Library/Application Support/BootCamp/ , then extract a file called WindowsSupport.dmg out
  9. Further use 7zip to browse inside "WindowsSupport.dmg" and there is another file 0.Apple_ISO and this is the file we are looking for. Extract it out and rename it to have suffix as ".iso" ; e.g. BootCamp.iso
  10. Mount BootCamp.iso on Windows or write it to a  or USB
  11. and now you can install drivers from the drivers resided in the ISO file.

As you can see, there are a hard-working process from steps 4 to 7, since I found that it has about 6 iterations I have to do it. So I thought I would write a ruby script for processing it for me, it would be pretty convenient. I was planing on writing every steps into my script at first, but I can't find a way to extract the "BootCampESD.pkg" yet. So, my script only does step 2-7 for now.

Here's the code
#!/usr/bin/env ruby

# Author: Anidear (anidear1 {at} gmail {dot} com)
# My Blog:
# Credit:

require 'net/http'
require 'uri'


mac_update_uri = URI(MAC_UPDATE_URL)
mac_update_xml = Net::HTTP.get(mac_update_uri)
dist_links =
pkg_links =
    #search for 041-XXXX.English.dist or BootCampESD.pkg
            link_url = (link[0].nil?)? link[1] : link[0] ;
            version = link_url.match(/041-[0-9]+/)[0]
            if (link[0].nil?)
                pkg_links[version] = link_url
                dist_links[version] = link_url

#filter only .pkg presents!{|key,val|
    pkg_links.key?(key) #keep dist_link if pkg_link presents

#for each of dist_links
#find something like 
# "var models = ['MacBookAir3,1','MacBookAir3,2',];"
list = dist_links.keys.sort
    val = dist_links[key]
    uri = URI(val)
    data = Net::HTTP.get(uri)

    res = data.match(/var models = \[(.*)\];/)
    if !(res[1].nil?)
        puts "Code: #{key}"
            puts "\t[+] #{model}"
        puts "Download Link:\n\t[+] #{pkg_links[key]}"

# instruction
puts '1. Go to "Apple menu" -> "About this Mac" -> "More Info…" -> "Hardware"'
puts '   to see what model your mac is.'
puts '2. Match your model with the download link above and download it'
puts '3. Use 7zip application to extract the pkg file'
puts '4. Browse to "Library/Application Support/BootCamp/" in the archive'
puts '5. Inside there is a file "WindowsSupport.dmg", also use 7zip to browse inside it'
puts '6. There is "0.Apple_ISO" file, rename it to have a proper .iso extension e.g. "BootCamp.iso"'
puts '7. Mount BootCamp.iso in Windows or burn it to a CD in order to use it.'
puts 'Have fun!'



Installing Vyatta Network OS

Vyatta Network OS for virtual and cloud infrastructure.
เอาไว้สำหรับทำต่อระบบ Network แบบจำลองนั่นเอง
ทีนี้ก็เลยจะเอาไว้สร้าง lab เพื่อจำลองระบบ routing  จะได้ทดลองคำสั่งต่างๆได้


  • Host machine:
    • Linux 
    • VMWare 8.0
    • eth0 ต่อออก WAN (Internet)
    • vmnet8 ต่อเข้ากับระบบ VMWare NAT มี IP address =
    • มี interface ซ่อนอยู่ตัวนึงของ VMWare (มีมาโดยอัตโนมัติ) เป็น NAT gateway ที่ IP address =
  • Vyatta:
    • Vyatta 6.4-2012.04.30 community edition
    • eth0: ต่อเข้ากับ VMware NAT โดยมี IP address =
    • eth1: ต่อเข้ากับ VMware LAN segmentation โดยมี IP address =
    • เปิด DHCP server ไว้ที่ eth1 โดยจ่ายให้ตั้งแต่ -
    • ทำ NAT จากสาย eth1 ให้วิ่งไปยัง eth0 (และในที่สุดออกสู่ Internet ได้)
    • เปิด port forwarding โดยให้ eth0 รอรับที่ port 4444, แล้วจึงส่งข้อมูลต่อไปให้เครื่อง client ที่ port 4444  โดยรับเฉพาะ TCP packets เท่านั้น
  • Client:
    • Linux
    • eth0 ต่อเข้ากับ VMware LAN segmentation กลุ่มเดียวกับเครื่อง Vyatta และรอรับ IP, DNS จาก DHCP ของ Vyatta
    • เปิด nc -lvvp 4444 -e /bin/bash รอรับไว้

วิธีการติดตั้ง บน VMware

  1. ดาวน์โหลด ISO file จาก : ตัวนี้จะเป็น community version คือ"ฟรี"นั่นเอง แล้วก่อนจะดาวน์โหลดได้จะต้องกรอกชื่อและรายละเอียดต่างๆก่อน (กรอกมั่วก็คงไม่เป็นไร)
  2. เลือกดาวน์โหลด ตัวไหนมาก็ได้  คือมันจะแยกเป็นสองแบบ แบบ 32bit หรือแบบ 64bit  , แล้วก็จะแยกอีกทีว่าจะเอาแบบ สำหรับติดตั้ง หรือจะเอาแบบ virtual image คือเป็น Live CD เปิดมาจะใช้งานได้เลย    เลือกตัวไหนก็ได้  (ปล.ผมเลือกแบบ virtual image)
  3. เปิด VMWare, สร้าง VM ใหม่ขึ้นมาโดยให้มี 
    1. hard disk ขนาดมากกว่า 1GB ขึ้นไป
    2. RAM ให้ซัก 92 MB ละกัน ต่ำๆไว้ก่อนจะได้ประหยัดๆ
    3. มี CDROM โดยให้ mount ไปหาไฟล์ .iso ที่ download มาไว้ตั้งแต่ข้อ 2
  4. เปิด VM ตัวนี้โดยให้ boot จากแผ่น
  5. เข้ามาถึง จะต้อง Login โดยใช้
    1. Username:  vyatta
    2. Password: vyatta
  6. สั่งคำสั่งเพื่อติดตั้ง แต่ก่อนอื่น  ต้องเข้าใจว่า การติดตั้งมีสองอย่างคือ 
    1. ติดตั้งแบบ image: คือ การติดตั้งแบบ config เสร็จเรียบร้อยแล้ว แล้วเอามาแพ็กรวมกันเป็น ไฟล์ image  ซึ่งข้อดีก็คือ บน hard disk ตัว VM ตัวนี้จะสามารถมีได้หลายๆ network configuration (โดย 1 ระบบคือ 1 image)  แล้วก็เลือกเปิดตอนบูทเครื่องได้  แต่ก็จะแก้ไขข้อมูลลำบาก
      • ติดตั้งโดยใช้คำสั่ง  /sbin/install-image
    2. ติดตั้งแบบ system: คือการติดตั้งแบบลงทุกอย่างลงบน hard disk โดยให้โครงสร้างทั้ง hard disk คือหนึ่งระบบเลย   การลงแบบนี้จะแก้ไขค่าง่าย  แต่ก็จะได้ network configuration แค่ชุดเดียว  ถ้าอยากแก้ไขก็ต้องค่อยๆไล่แก้ไฟล์เอง
      • ติดตั้งโดยใช้คำสั่ง  /sbin/install-system
  7. ตอนติดตั้ง (ในที่นี้เลือกแบบ system)
    1. Would you like to continue? (Yes/No) [Yes]: Yes
    2. Partition (Auto/Union/Parted/Skip) [Auto]: Auto
    3. Install the image on? [sda]: sda
    4. This will destroy all data on /dev/sda. Continue? (Yes/No) [No]: Yes
    5. How big of a root partition should I create? (1000MB - ......MB) [.......] MB:  <enter>
    6. Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]: <enter>
    7. Enter password for administrator account
      1. Enter vyatta password:
    8. Which drive should GRUB modify the boot partition on? [sda]: <enter>
    9. Done!
  8. reboot
  9. พอเข้าหน้า Login ให้เข้าด้วย
    1. username: vyatta
    2. password: <password ที่ตั้งไว้ใน 7.7>
  10. เข้าโหมด configuration ด้วยคำสั่ง configure

คำสั่งต่างๆ บน Vyatta

คำสั่งต่างๆที่มี $ หรือ # นำหน้า  ไม่ต้องพิมพ์อักษร $,# นำหน้าทั้งนั้น

สั่ง upgrade ระบบ

     $ sudo full-upgrade
     $ sudo full-upgrade -k
     $ reboot

ดู version

     $ show version

ตั้ง ip address: default gateway

     $ configure
     # set interfaces ethernet eth0 address
     # set interfaces ethernet eth1 address
     # set system gateway-address 
     # set system name-server 
     # commit
     # save
     # exit

ตั้ง SSH server [optional]

     $ configure
     # set service ssh listen-address
     # commit
     # save
     # exit

ตั้ง NAT : ให้วง โดน masquerade แล้วออกไปยังสาย eth0

** remark: ระบบเก่าจะใช้ 'set service nat' แต่ของใหม่ย่อลงเหลือแค่ 'set nat'
     $ configure
     # set nat source rule 1 outbound-interface eth0
     # set nat source rule 1 source address
     # set nat source rule 1 translation address masquerade
     # commit
     # save
     # exit

** check สถานะของ NAT ที่สร้างด้วยการสั่ง:  run show nat source rules

ตั้ง Port forwarding : มีสองทางคือ ใช้แบบ service หรือ แบบ firewall  ในที่นี้จะใช้แบบ service

อันนี้จะ forward port ที่เข้าทาง eth0 แบบ tcp เข้ามาที่ port 4444 ของ vyatta โดยจะส่งไปให้
** remark: ระบบเก่าจะใช้ 'set service nat' แต่ของใหม่ย่อลงเหลือแค่ 'set nat'
     $ configure
     # set nat destination rule 10 inbound-interface eth0
     # set nat destination rule 10 protocol tcp
     # set nat destination rule 10 destination port 4444
     # set nat destination rule 10 translation address
     # set nat destination rule 10 translation port 4444
     # commit
     # save
     # exit

** check สถานะของ forwarding port ที่สร้างด้วยการสั่ง: run show nat destination rules

ตั้ง DHCP:  ตั้ง DHCP server สำหรับจ่าย IP ให้วงชื่อ ETH1_POOL (ตั้งอะไรก็ได้) ที่วิ่งเข้ามาทางสาย eth1 (ตรวจสอบเองอัตโนมัติ) โดยจะแจก ip ให้ตั้งแต่ - โดยจะจ่ายค่าอื่นๆให้เป็น default gateway =, DNS, และให้ในวงนี้มี domain ว่า *

$ configure
     # set service dhcp-server shared-network-name ETH1_POOL subnet start stop
     # set service dhcp-server shared-network-name ETH1_POOL subnet default-router
     # set service dhcp-server shared-network-name ETH1_POOL subnet dns-server
     # set service dhcp-server shared-network-name ETH1_POOL subnet dns-server
     # set service dhcp-server shared-network-name ETH1_POOL subnet domain-name
     # commit 
     # save
     # exit


ใช้ ip addr ดู ip ของแต่ละ interface

ดูสถานะการ routing ปัจจุบัน (default gateway ที่

ดูสถานะการตั้งค่า NAT (Masquerade)

สถานะของ NAT (port forwarding)

สถานะของ DHCP server (leasing , statistics)

ถ้าจะเอา configuration ออกมาใช้คำสั่ง

เอาข้อมูลออกมาเป็นวิธีการ config มาในรูปแบบของ Vyatta
หรือว่าจะไปเปิดเอาจากในไฟล์ /opt/vyatta/etc/config/config.boot  ก็จะเหมือนกัน
     # show configuration all

หรือ จะเอาออกมาเป็นชุดคำสั่งแบบ command line ก็จะใช้คำสั่ง

     # show configuration commands