How to Use Nmap for Ethical Hacking and Penetration Testing
របៀបប្រើប្រាស់ Nmap សម្រាប់ Penetration Testing ភាគ ០១
Nmap (Network Mapper) គឺជា tool (software) ដែលមានមុខងារធ្វើការស្វែងរកពត៏មានផ្សេងដូចជា computer ដែលបានបើក ស្វែងរក open port និងបានភ្ជាប់នៅលើបណ្តាញណេតវើក ដែលវាល្ពបំផុតមួយសម្រាប់ជំនាញ Ethical Hacking និង Penetration Testing។
វាត្រូវបានប្រើប្រាស់ដើម្បីស្កេនរកមើលឧបករណ៍នៅក្នុងបណ្តាញ (Hosts) ពិនិត្យមើលអពី services ដែលបើកចំហ (Open Ports) និងស្វែងរកប្រព័ន្ធប្រតិបត្តិការ (OS) ឬចន្លោះប្រហោងដែលមាននៅលើបណ្តាញ (Vulnerabilities)។
⚠️ អំពីបញ្ហាផ្លូវច្បាប់៖ សូមប្រើប្រាស់ដោយមានទទួលខុសត្រូវនិងអនុវត្តនៅលើបណ្តាញដែលមានការអនុញ្ញាតិ្ត (authorization)។

១. ការស្កេនជាមូលដ្ឋាន (Basic Scanning)
សាកស្រមៃថាយើងចង់ធ្វើការស្វែងយលអំពីព័ត៌មានចាំបាច់មួយចំនួនផ្សេងៗអំពី system target របស់យើងដូចជា IP address, ឬ Open ports ឬ Services ដែលកំពុងដំណើរការ តើយើងនឹងធ្វើយ៉ាងដូចម្តេចព្រោះយើងមិនអាចដើរទៅបើក ឬ access ទៅក្នុង computer របស់ target យើងបាននោះទេ។ ដំណោះស្រាយយើងប្រើប្រាស់ Network Mapping tool ដើម្បីទៅ scan មើលថាតើមាន server, ឬ computer ណាខ្លះដែលកំពុងតែដំណើរការនៅលើបណ្តាញជាមួយគ្នា ហើយដែលអាច reachable បាន។
ការដំឡើង Nmap tool
- ប្រសិនបើអ្នកប្រើប្រាស់ Linux OS, វាពិតជាមានភាពងាយស្រួលណាស់ក្នុងការដំឡើង៖
sudo apt install nmap- សម្រាប់ Windows យើងត្រូវ download executable file binary ដើម្បីដំឡើងវាដែលមានឈ្មោះថា
ZenMap។ Link to download https://nmap.org/download#windows - សម្រាប់ MacOS យើងអាចធ្វើការដំឡើងតាមរយៈ Brew ដោយប្រើប្រាស់ command
brew install nmap
នេះជាជំហានដំបូងដើម្បីពិនិត្យមើលថា System Target កំពុងដំណើរការឬអត់ (Live Host scan) និងមាន Ports ណាខ្លះកំពុងបើក យើងអាចប្រើប្រាស់ technique scan មួយចំនួនដូចខាងក្រោម៖
- ស្កេន IP តែមួយ៖
nmap 192.168.1.1 - ស្កេនទៅលើ domain name ៖
nmap scanme.nmap.org - ស្កេនគោលដៅច្រើនក្នុងពេលតែមួយ៖
nmap 192.168.1.1 - 192.168.1.2 - ស្កេនជា Range IP ទាំងមូល៖
nmap 192.168.1.1-50Nmap នឹង scan IP address ចាប់ពី លេខ ១ ដល់លេខ ៥០។ - ស្កេនមួយ Network ទាំងមូល (Subnet)៖
nmap 192.168.1.0/24
២. ការស្កេនបែបស៊ីជម្រៅ (Advanced Scanning)
នៅក្នុងការធ្វើ Penetration Testing យើងត្រូវការព័ត៌មានលម្អិតជាងមុន ដើម្បីវិភាគរកចន្លោះប្រហោង ឬ vulnerability ដែលមាននៅក្នុងប្រពន័្ធរ។
ការស្កេនរក version វាជួយឲ្យយើងងាយស្រួលក្នុងការវិភាគអំពីចំណុចខ្សោយនៃប្រពន្ធបានលឿន និងមានភាពច្បាស់លាស់ (Service Version Detection): ជួយឱ្យដឹងថា Port នីមួយៗកំពុងត្រូវបានប្រើប្រាស់ដោយ application អ្វី? និង Version អ្វី (ងាយស្រួលរក Exploit)។
nmap -sV 192.168.1.1 - យើងប្រើប្រាស់ optoin -sV ដើម្បីស្វែងរក service version
ស្កេនរកប្រព័ន្ធប្រតិបត្តិការ (OS Detection):
Nmap ធ្វើការ send OS detection packages ដើម្បីធ្វើការវិភាគថាតើកុំព្យូទ័រ target ប្រើប្រើប្រាស់ Windows, Linux ឬ macOS។ វិធីសាស្ត្រដែលសាមញ្ញបំផុតគឺការ ping ដោយយើងអាចសង្កើតមើល ប្រើសិនបើការ respond TTL គឺ 64 មានន័យថាគឺជា Linux/Unix តែបើការឆ្លយតបមានលេខ 128 នោះមានន័យថា target របស់យើងគឺជា Windows OS
example: nmap -O 192.168.1.1
3. ការ scan លើ Ports
តាមធម្មតា Nmap នឹងស្កេនតែ Ports ដែលពេញនិយមចំនួន ១,០០០ ប៉ុណ្ណោះ ឬ top common port តែនៅក្នុងការ real assessment យើងចាំបាច់ត្រូវតែ scan គ្រប់ ports ទាំងជាង ៥ មុឺន port ដើម្បិកុំឲ្យមានការធ្វេប្រហេសនិងមិនគ្រប់ជ្រុងជ្រោយនៃការវាយតម្លៃសុវត្តិភាព។ បើចង់កំណត់ខ្លួនឯងយើងអាចប្រើប្រាស់ command៖
ស្កេនតែ Port ជាក់លាក់ (ឧទាហរណ៍ Web Server Port 80 និង 443)៖
nmap -p 80,443 192.168.1.1- ប្រើប្រាស់ option-p
ស្កេនរន្ធសេវាកម្មទាំងអស់ (ចាប់ពី Port 1 ដល់ 65535)៖
nmap -p- 192.168.1.1--p-មានន័យថា scan គ្រាប់ទាំងជាង៦ម៉ឺន ports
៤. ការប្រើប្រាស់ Nmap Scripting Engine (NSE)
NSE គឺជាមុខងារពិសេសរបស់ Nmap ដែលមាន Script ស្រាប់ៗសម្រាប់ជួយរកចន្លោះប្រហោង (Vulnerability Detection) ឬ Malware។
ស្កេនរកចន្លោះប្រហោងទូទៅ (Vulnerability Scan)៖
nmap --script vuln 192.168.1.1- វាននឹងធ្វើការ scan រកចំណុចខ្សោមួយចំនួនតែមិនទាំងអស់នោះទេ យើងមិនអាចយកផ្លូវការបានទាំងអស់ឡើយ
៥. ការរក្សាទុក result (Saving Output)
ពេលធ្វើតេស្ត អ្នកត្រូវរក្សាទុកលទ្ធផលទុកធ្វើជារបាយការណ៍ (Report)។
រក្សាទុកជា File អក្សរធម្មតា (Text File)៖
nmap -oN report.txt 192.168.1.1Nmap -0A 192.168.1.1 out-put-name- វានឹងបង្កើត file result ឲ្យយើងទាំងអស់រួម XML, TXT និង Nmap format។
💡 គន្លឹះបន្ថែមសម្រាប់ Penetration Tester:
ប្រសិនបើ target របស់យើងមាន Firewall ស្ទាក់ចាប់ អ្នកអាចប្រើ command ដូចជា
nmap -sS 192.168.1.1(SYN Scan ឬ Stealth Scan) ដើម្បីស្កេនដោយលាក់លៀម និងពិបាកឱ្យ Firewall ចាប់បាន។ (ទាមទារសិទ្ធិ sudo ក្នុងការរត់)។