01-07-2014, 04:18 AM
pengertian perintah awk
"Awk" adalah sebuah perintah pada Linux / Unix yang mempunyai kegunaan untuk mem-parsing atau mengurai sebuah file. Hampir mirip dengan "grep", namun bedanya grep digunakan ketika kita akan mem-filter sebuah isi direktori dengan sebuah ketentuan. awk paling sering digunakan untuk me-scan dan memproses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.
Berikut ini adalah fitur-fitur yang dimiliki Awk :
-Awk menjadikan text file sebagai records dan fields
-Seperti bahasa pemrograman lainnya, Awk mengandung variabel, kondisi, dan looping
-Awk mempunyai operator aritmatika dan string
-Awk bisa digenerate menjadi laporan yang berformat
contoh perintah default:
pertama kita buat file txt dengan nama terserah,disini saya menggunakan nama listhutang.txt dengan isi sebagai berikut:
berikut contoh perintah dan hasilnya:
contoh perintah menampilkan baris tertentu:
contoh perintah menampilkan field tertentu:
contoh perintah menampilkan jumlah paling banyak/terkecil berdasarkan field ke 3:
contoh inisialisasi dan final action:
Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.
Syntax:
contoh:
untuk contoh pengembangan awk saya kasih contoh mengabungkan perintah awk dan grep untuk menganalisa file httpd.log pada sebuah server untuk membuat report tertentu:
pertama kita lihat format file yang akan kita proses
kira-kira format dari file httpd.log ini adalah:
Contoh mencari serangan sqli:
pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
Contoh mencari serangan sqli:
pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
keterangan:
script ini berarti list semua file dalam folder "~/workshop/sql" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata2 GET dan filter sekali lagi baris yang mengandung kata-kata select atau union yang mana merupakan kata-kata yang biasa digunakan dalam melakukan sql injection. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/sql" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_sqli_report.txt)
Contoh mencari serangan xss:
pertama kita masukan file httpd.log ke folder “workshop/xss”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/xss”
setelah masuk kita masukkan perintah di terminal :
keterangan:
script ini berarti list semua file dalam folder "~/workshop/xss" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung kata-kata javascript yang mana salah satu ciri serangan xss. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/xss" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_xss_report.txt)
Contoh mencari serangan directory jumping:
pertama kita masukan file httpd.log ke folder “workshop/dirjump”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/dirjump”
setelah masuk kita masukkan perintah di terminal :
keterangan:
Dengan script ini, bias dilakukan automatisasi pembuatan report tentang adanya directory jumping dari apache log. Script ini berarti list semua file dalam folder "~/workshop/dirjump" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung /etc atau cmd.exe karena biasanya file-file yang dicari ada di folder /etc atau bisa diakses dengan cmd.exe.
Kita juga dapat melakukan pencacahan tentang ip mana yang melakukan jenis serangan sql injection/serangan yg lain dengan script/perintah berikut:
contoh menganalisis file secure.log
kita pertama-tama mencari log ssh yang berhasil login menggunakan script berikut ini
lalu mencari log ssh yang gagal login dengan menggunakan script berikut ini
disini saya sertakan juga file httpd.log dan secure.log buat latihan .file nya bisa di download disini :d
kalo tutorialnya berkenan mungkin bisa bagi yang ijo2 nya ))
"Awk" adalah sebuah perintah pada Linux / Unix yang mempunyai kegunaan untuk mem-parsing atau mengurai sebuah file. Hampir mirip dengan "grep", namun bedanya grep digunakan ketika kita akan mem-filter sebuah isi direktori dengan sebuah ketentuan. awk paling sering digunakan untuk me-scan dan memproses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.
Berikut ini adalah fitur-fitur yang dimiliki Awk :
-Awk menjadikan text file sebagai records dan fields
-Seperti bahasa pemrograman lainnya, Awk mengandung variabel, kondisi, dan looping
-Awk mempunyai operator aritmatika dan string
-Awk bisa digenerate menjadi laporan yang berformat
contoh perintah default:
pertama kita buat file txt dengan nama terserah,disini saya menggunakan nama listhutang.txt dengan isi sebagai berikut:
Code:
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
Code:
pandora@pandorabox:~/awk$ awk '{print;}' listhutang.txt
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
Code:
pandora@pandorabox:~/awk$ awk '/sony/' listhutang.txt
1 sony 200000
Code:
pandora@pandorabox:~/awk$ awk '{print $2,$3}' listhutang.txt
sony 200000
nicolas 300000
amin 50000
yoga 10000
mizan 85000
Code:
pandora@pandorabox:~/awk$ awk '{$3>90000}' listhutang.txt
1 sony 200000
2 nicolas 300000
contoh inisialisasi dan final action:
Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.
Syntax:
Code:
BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }
# is for comments in Awk
Code:
pandora@pandorabox:~/awk$ awk 'BEGIN {print "no\tnama\tjumlah";}
>{print $1,"\t",$2,"\t",$3,"\t";}
>END {print "----------------------"
>}' listhutang.txt
untuk contoh pengembangan awk saya kasih contoh mengabungkan perintah awk dan grep untuk menganalisa file httpd.log pada sebuah server untuk membuat report tertentu:
pertama kita lihat format file yang akan kita proses
kira-kira format dari file httpd.log ini adalah:
Code:
1 2 3 4 5 6 7 8 9
ip - - Date/time timezone Request type Req content http response size
Contoh mencari serangan sqli:
pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
Code:
pandora@pandorabox:~/workshop/sql$ for file in $(ls ~/workshop/sql); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "SELECT|UNION|select|union" > $file"_sqli_report.txt"; done
pertama kita masukan file httpd.log ke folder “workshop/sql”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/sql”
setelah masuk kita masukkan perintah di terminal :
Code:
pandora@pandorabox:~/workshop/sql$ for file in $(ls ~/workshop/sql); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "SELECT|UNION|select|union" > $file"_sqli_report.txt"; done
script ini berarti list semua file dalam folder "~/workshop/sql" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata2 GET dan filter sekali lagi baris yang mengandung kata-kata select atau union yang mana merupakan kata-kata yang biasa digunakan dalam melakukan sql injection. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/sql" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_sqli_report.txt)
Contoh mencari serangan xss:
pertama kita masukan file httpd.log ke folder “workshop/xss”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/xss”
setelah masuk kita masukkan perintah di terminal :
Code:
for file in $(ls ~/workshop/xss); do awk '{print $1, $4, $6, $7}' $file |grep GET| grep -E "javascript" > $file"_xss_report.txt"; done
keterangan:
script ini berarti list semua file dalam folder "~/workshop/xss" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung kata-kata javascript yang mana salah satu ciri serangan xss. lakukan parse dan filter pada setiap file yang dtemukan pada folder "~/workshop/xss" sampai habis. Lalu hasilnya dimasukan ke dalam nama yang diproses ditambah dengan imbuhan “_sqli_report.txt”(httpd.log_xss_report.txt)
Contoh mencari serangan directory jumping:
pertama kita masukan file httpd.log ke folder “workshop/dirjump”
lalu kita masuk ke dalam folder yang telah ditentukan dengan perintah “cd workshop/dirjump”
setelah masuk kita masukkan perintah di terminal :
Code:
for file in $(ls ~/workshop/dirjump); do awk '{print $1, $4, $6, $7}' "$file" |grep GET| grep -E "/etc|cmd.exe" > $file"_dirjump_report.txt"; done
keterangan:
Dengan script ini, bias dilakukan automatisasi pembuatan report tentang adanya directory jumping dari apache log. Script ini berarti list semua file dalam folder "~/workshop/dirjump" kemudian parse dengan awk dan ambil informasi yang diperlukan dimana $1 adalah ip address, $4 adalah DateTime, $6 adalah Request Type dan $7 adalah Request Content kemudian filter baris yang mengandung kata-kata GET dan filter sekali lagi baris yang mengandung /etc atau cmd.exe karena biasanya file-file yang dicari ada di folder /etc atau bisa diakses dengan cmd.exe.
Kita juga dapat melakukan pencacahan tentang ip mana yang melakukan jenis serangan sql injection/serangan yg lain dengan script/perintah berikut:
Code:
for file in $(ls ~/workshop/sqli_report); do awk '{print $1}' $file |sort|uniq -c|sort -n > $file"_stats.txt"; done
kita pertama-tama mencari log ssh yang berhasil login menggunakan script berikut ini
Code:
cat secure.log | sort | grep 'Accepted' | awk '{print $1 " " $2 " " $3 " User: " $9 " IP:" $11 }' > "ssh_log_success.txt"
Code:
cat secure.log | sort | grep 'Failed' | awk '{print $1 " " $2 " " $3 " User: " $9 " IP:" $11 }' > "ssh_log_success.txt"
disini saya sertakan juga file httpd.log dan secure.log buat latihan .file nya bisa di download disini :d
kalo tutorialnya berkenan mungkin bisa bagi yang ijo2 nya ))