[Share] bermain dengan perintah awk
#1
Smile 
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:
Code:
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
berikut contoh perintah dan hasilnya:
Code:
pandora@pandorabox:~/awk$ awk '{print;}' listhutang.txt
1 sony 200000
2 nicolas 300000
3 amin 50000
4 yoga 10000
5 mizan 85000
contoh perintah menampilkan baris tertentu:
Code:
pandora@pandorabox:~/awk$ awk '/sony/' listhutang.txt
1 sony 200000
contoh perintah menampilkan field tertentu:
Code:
pandora@pandorabox:~/awk$ awk '{print $2,$3}' listhutang.txt
sony 200000
nicolas 300000
amin 50000
yoga 10000
mizan 85000
contoh perintah menampilkan jumlah paling banyak/terkecil berdasarkan field ke 3:
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
contoh:
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
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
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 :
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
contoh menganalisis file secure.log

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"
lalu mencari log ssh yang gagal login dengan menggunakan script berikut ini
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 Smile)Smile)

Wink


Messages In This Thread
bermain dengan perintah awk - by ano21 - 01-07-2014, 04:18 AM
RE: bermain dengan perintah awk - by rose_life - 01-07-2014, 04:51 AM
RE: bermain dengan perintah awk - by ano21 - 01-07-2014, 05:14 AM
RE: bermain dengan perintah awk - by alkaaf - 01-07-2014, 06:25 AM
RE: bermain dengan perintah awk - by ano21 - 01-07-2014, 11:59 AM
RE: bermain dengan perintah awk - by sonyrimawan - 01-07-2014, 03:26 PM
RE: bermain dengan perintah awk - by hackimripper - 01-07-2014, 03:37 PM
RE: bermain dengan perintah awk - by [H2] - 01-07-2014, 03:40 PM
RE: bermain dengan perintah awk - by darkcaroline - 09-29-2017, 10:21 AM




Users browsing this thread: 2 Guest(s)