Log Analysis for Web Attacks [ Incident Handling ]

ဒီခါေတာ့ ခါတိုင္းေရးေနက်ပံုစံေတြမဟုတ္ပဲ Blue Team ဆန္ဆန္ေလးေရးဖို႕ စဥ္းစားမိတယ္။ ျပီးေတာ့ခုေနခ်ိန္ခါမွာ Website ေတြကလဲ Attack လုပ္ခံေနရေတာ့ ဟုတ္တာမဟုတ္တာ အသာထား ဘယ္လိုေတြ Log ေတြဖတ္မယ္ စသည္ျဖင့္ နားလည္ထားရေအာင္ ေရးလိုက္တာျဖစ္ပါတယ္။ ဒီေတာ့ က်ေနာ္တို႕ ဇာတ္လမ္းေလးတစ္ခုလုပ္ၾကတာေပါ့။

ဇာတ္လမ္း 

ဇာတ္လမ္းထဲမွာ Attacker ပါမယ္ ။ Attacker လဲကိုယ္ပဲျဖစ္မယ္။ ကိုယ့္ဘာကိုစမ္းတာကိုး ကိုယ္ပဲျဖစ္မွာေပါ့။ ေနာက္ျပီးေတာ့ Incident Handling Engineer ေပါ့ ။ ဒါလဲကိုယ္ပဲ ။ ဒါေပမဲ့ ဒီေဆာင္းပါးမွာ ဒီေကာင္ကဇာတ္လိုက္ျဖစ္မွာေပါ့။ အတိုက္ခိုက္ခံရမယ့္ Web Server ပါမယ္ ။ အားနည္းခ်က္ ရွိတဲ့ Web Application ကိုသံုးမိထားတဲ့ Web Server ေပါ့။ ဒါလဲ ဇာတ္လမ္းသေဘာအရပါ။

Web Server with Vulnerable Application

ဇာတ္လမ္းထဲက Web Server ကိုက်ေနာ္ကေတာ့ Windows 10 မွာ Virtual Web Server ျဖစ္တဲ့ XAMPP ကိုသံုးလိုက္တယ္။

Vulnerable Application အေနနဲ႕ေတာ့ DVWA ( Damn Vulnerable Web Application ) ကို သံုးလိုက္တယ္။

Attacker

Attacker အေနနဲ႕ကေတာ့ နာမည္ၾကီး Kali ေပါ့ ။ အထဲက Tool ေတြယူသံုးတာေပါ့။

ဇာတ္လမ္းရဲ႕သေဘာအရ Attacker ကအရင္တိုက္ခိုက္မွာျဖစ္ပါတယ္။ သူတုိက္ခုိက္တယ္ဆိုေတာ့မွ အဓိကဇာတ္လိုက္က ေရာက္လာမွာေလ ။ ျမန္မာကားထဲကလိုေပါ့ ။ ဒီေတာ့ တိုက္ခုိက္တဲ့ အခန္းကိုအရင္ လုပ္လိုက္ရေအာင္။

Attacking with SQL Map

ဒါကေတာ့ Server ရဲ႕ IP ေပါ့။ ဟုတ္ျပီ ဒါကို Attacker ဘက္ကေန SQL map run မယ္။

Attacker IP က 192.168.43.41

Running SQLmap

python sqlmap.py -u "http://192.168.43.234/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=fjgilr1rfi6imbj98it9fvfce9" --dbs

ဒါဆိုရင္ Database ေတြထြက္လာပါျပီ။ ရျပီ ဒီေလာက္ဆိုရျပီ။ ဇာတ္လိုက္ကိုေခၚလိုက္ေတာ့မယ္။

Log Files

C:/xampp/apache/logs/access.log

ဒီလိုဆို Log ေတြဖတ္လို႕ေတာ့ရျပီ။ ဒါေပမဲ့ log က မ်ားေလေလ ဖတ္ရခက္ေလပဲမဟုတ္လား။

ဒါေၾကာင့္ ဒီေနရာမွာ က်ေနာ္တို႕ Log ေတြဖတ္တယ္ဆိုတာ Attacker ရဲ႕ သေဘာတရားကိုနားလည္ထားရင္မေကာင္းဘူးလား။ SQL Injection နဲ႕ ေစာနက Attack လုပ္သြားတယ္ ဇာတ္ညႊန္းက ကိုယ္ေရးတာဆိုေတာ့ ကိုယ္သိျပီးသား။ တကယ္လုပ္တဲ့အခါက်ရင္ေတာ့ မသိဘူး။ ဒါေၾကာင့္ ဘယ္ attack ေတြက ဘယ္လို Payload ေတြ Inject လုပ္တတ္တယ္ဆိုတာ သိထားေတာ့ေကာင္းတာေပါ့။

SQL Injection ထိုးတဲ့ သူေတြသံုးတတ္တဲ့ command ေလးေတြရွာၾကည့္မယ္ ။ ရွာတဲ့ေနရာမွာ ဒီတိုင္းမထားဘူး ထြက္လာတဲ့ output ကို txt file အေနနဲ႕ သိမ္းထားလိုက္မယ္။ ဒါမွ မွတ္မွတ္သားသားေလးျဖစ္တာေပါ့။

UNION command

အမ်ားအားျဖင့္ Attacker ေတြဟာ order by နဲ႕ Output ျပတဲ့ Column ဘယ္နခုရွိတယ္ဆိုတာစစ္ျပီးတာနဲ႕ အဲ့ output ကေန UNION SELECT ကိုသံုးျပီးေတာ့ အျခား database ထဲကေန Select လုပ္ၾကပါတယ္။ ဒီေတာ့

cat access.log | grep "UNION"

ဒါကို Standard output ကိုသံုးျပီး union.txt ဆိုျပီးက်ေနာ္ Save ထားလိုက္မယ္။

cat access.log | grep "UNION" >> union.txt

Log တစ္ေၾကာင္းေလာက္ဖတ္ၾကည့္လိုက္မယ္။

192.168.43.41 - - [04/Sep/2017:22:53:16 +0630] "GET /DVWA-master/vulnerabilities/sqli/?id=1%27%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20GJGn&Submit=Submit HTTP/1.1" 302 - "-" "sqlmap/1.1.5#stable (http://sqlmap.org)"
192.168.43.41 = Attacker IP

[04/Sep/2017:22:53:16 +0630] = Attacking Time

GET = HTTP Method ( get ပဲဖမ္းတာ access log က )

/DVWA-master/vulnerabilities/sqli/?id = Vulnerable File Path

UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20GJGn&Submit=Submit HTTP/1.1 = Payload

sqlmap/1.1.5#stable (http://sqlmap.org) = User Agent

ဒီလိုမိ်ဳး က်ေနာ္တို႕ ခြဲျခမ္းပစ္လိုက္မယ္။ ဒီလိုဆို User Agent ကုိၾကည့္ျပီး Attacker က SQLmap ကိုသံုးျပီး Attack လုပ္တယ္ဆိုတာ ေယဘူယ်အားျဖင့္သိနိုင္တယ္။ ဘာေၾကာင့္ဆို SQL map ကလဲ header ေတြကိုအမ်ိဳးမ်ိဳး ေျပာင္းလို႕ရတာမို႕ တျခား User Agent ကို ေတြ႕လဲ SQL map မသံုးဘူးလို႕တပ္အပ္မေျပာနိုင္ပါဘူး။

File path ကိုသိရရင္ေတာ့ က်ေနာ္တို႕ Infected ျဖစ္ျပီးေနာက္ပိုင္း ျပန္ျပင္ရမယ့္ အားနည္းခ်က္အေနနဲ႕ ဒီ File ကို code analysis ျပန္လုပ္ရမယ္ဆိုတာ သိလိုက္ရျပီ။

Payload ကေတာ့ ပူစရာမလိုဘူူး ကိုယ္ကအစတည္းကသိျပီးသား ျဖစ္ေနရမယ္၊ SQL Injection မွာသံုးတတ္တဲ့ payload ကိုသိလို႕ဒါေတြကို ရွာေတြ႕ထားတာ။

ေနာက္တစ္ခုကေတာ့ Attacker IP ပါ။ ဒီ IP ကိုၾကည့္ျပီး Forensic သမားဘာညာက သူတို႕လုပ္ရမယ့္ဟာလုပ္ပါလိမ့္မယ္။ က်ေနာ္တို႕ကေတာ့ဘာလုပ္ရမလဲဆုိေတာ့ ဒီ IP ကေနပဲ တျခားဘာေတြလုပ္ထားေသးလဲဆိုတာေတာ့ သိေအာင္လုပ္ရမယ္။ ဥပမာ Shell တင္သြားလားဘာလားေပါ့ ။

cat access.log | grep "192.168.43.41" >> 41_ip.txt

ဒီကေနတစ္ဆင့္ ဒီ IP က admin panel ရွာသြားေသးလား login page မွာ login ဝင္သြားေသးလား စသည္ျဖင့္ ျပန္ၾကည့္လို႕ရပါတယ္။

ဇာတ္လမ္းကေတာ့ ဒါပဲ၊ ျပီးျပီ။ ဒါေတြကို အရင္ကစိတ္မဝင္စားခဲ့ပါဘူး ။ က်ေနာ္ Report တင္ဖူးတဲ့ Company တစ္ခု Hack ခံရပါတယ္။ User ေတြရဲ႕ credit card information ေတြခုိးခံရတာျဖစ္တဲ့အတြက္ Attacker ကို ဖမ္းမိ မမိထက္ အေရးၾကီးတာက အဲ့ User ေတြကို ျပန္ရွင္းျပေပးရမွာပါ။ ဘာေၾကာင့္ဆို မရွင္းျပရင္ သူတို႕ယူတာျဖစ္သြားမယ္ေလ။ က်ေနာ္႕ကို လာငွားေတာ့ အရင္ကစိတ္မဝင္စားေပမယ့္ ပိုက္ဆံလဲရမယ္ဆိုေရာ လိုက္ေလ့လာျဖစ္ပါတယ္။ ျပီးေတာ့ ရွာလို႕လဲေတြ႕ခဲ့တယ္။ ဒါေၾကာင့္ $1250 ေပးပါတယ္။  ခုစာေရးေနတဲ့ Laptop ေလးဝယ္ျပီး KTV မွာသြားဟဲပစ္လိုက္ပါတယ္။

ဒီေနာက္ပိုင္းေတာ့ စိတ္ဝင္စားလာပါတယ္။ Sharing လဲလုပ္သြားမယ္လုိ႕စိတ္ကူးရပါတယ္။ Blue Team Hacker Handbook လက္ေဆာင္ေပးတဲ့ ကိုရဲရင့္ကိုေတာ့ ေက်းဇူးအထူးပါပဲ ။

ဒီထက္ပိုျပီး ေလ့လာခ်င္ရင္ေတာ့

https://www.sans.org/reading-room/whitepapers/logging/detecting-attacks-web-applications-log-files-2074

https://link.springer.com/article/10.1007/s11950-008-1008-y

https://www.crowdstrike.com/blog/mo-shells-mo-problems-web-server-log-analysis/