ວິທີໃຊ້ສະຄິບ Nmap Script Engine (NSE) ໃນ Linux
ກວດເບິ່ງພອດແລະບໍລິການທີ່ເປີດຢູ່ໃນໂຮດເຫຼົ່ານັ້ນ, ແລະອື່ນໆ.
ໜຶ່ງ ໃນຄຸນລັກສະນະທີ່ ໜ້າ ສົນໃຈຂອງ Nmap ແມ່ນ Nmap Script Engine (NSE), ເຊິ່ງ ນຳ ເອົາຄວາມຍືດຫຍຸ່ນແລະປະສິດທິພາບຫຼາຍຂຶ້ນມາສູ່ມັນ. ມັນຊ່ວຍໃຫ້ທ່ານຂຽນສະຄິບຂອງທ່ານເອງເປັນພາສາການຂຽນໂປແກມ Lua, ແລະອາດຈະແບ່ງປັນສະຄິບເຫລົ່ານີ້ກັບຜູ້ໃຊ້ Nmap ອື່ນໆຢູ່ທີ່ນັ້ນ.
ສະຄິບ NSE ມີ 4 ປະເພດ, ຄື:
- ສະຄຣິບ Prerule - ແມ່ນສະຄິບທີ່ ດຳ ເນີນການກ່ອນການ ດຳ ເນີນການສະແກນໃດໆຂອງ Nmap, ມັນຖືກປະຕິບັດເມື່ອ Nmap ບໍ່ໄດ້ເກັບ ກຳ ຂໍ້ມູນກ່ຽວກັບເປົ້າ ໝາຍ ເທື່ອ.
- ສະຄິບໂຮດຕິ້ງ - ແມ່ນສະຄຣິບທີ່ຖືກປະຕິບັດຫຼັງຈາກ Nmap ໄດ້ປະຕິບັດການ ດຳ ເນີນງານປົກກະຕິເຊັ່ນ: ການຄົ້ນພົບເຈົ້າພາບ, ການກວດຫາພອດ, ການກວດພົບເວີຊັນແລະການກວດພົບ OS ຕໍ່ກັບເຈົ້າຂອງເປົ້າ ໝາຍ.
- ສະຄິບບໍລິການ - ແມ່ນສະຄິບທີ່ ດຳ ເນີນການຕໍ່ບໍລິການສະເພາະທີ່ຟັງຢູ່ໃນກຸ່ມເປົ້າ ໝາຍ.
- ສະຄຣິບ Postrule - ແມ່ນສະຄິບທີ່ ດຳ ເນີນການຫຼັງຈາກ Nmap ໄດ້ສະແກນບັນດາເຈົ້າຂອງເປົ້າ ໝາຍ ທັງ ໝົດ ຂອງມັນ.
ຫຼັງຈາກນັ້ນ, ສະຄິບເຫລົ່ານີ້ຖືກຈັດເປັນກຸ່ມພາຍໃຕ້ຫລາຍປະເພດລວມທັງຂໍ້ຄວາມເພື່ອການກວດສອບ (auth), ການຄົ້ນພົບເຈົ້າພາບ (ການອອກອາກາດ), ການໂຈມຕີແບບບັງຄັບເພື່ອຄາດເດົາຂໍ້ມູນການກວດສອບ (brute), ຄົ້ນພົບເພີ່ມເຕີມກ່ຽວກັບເຄືອຂ່າຍ (ການຄົ້ນພົບ), ເຊິ່ງກໍ່ໃຫ້ເກີດການປະຕິເສດການບໍລິການ (dos) ), ໃຊ້ປະໂຫຍດຈາກຄວາມສ່ຽງບາງຢ່າງ (ຂູດຮີດ), ແລະອື່ນໆ. ຕົວອັກສອນ ຈຳ ນວນ ໜຶ່ງ ຂື້ນກັບປະເພດເລີ່ມຕົ້ນ.
ໝາຍ ເຫດ: ກ່ອນທີ່ພວກເຮົາຈະກ້າວຕໍ່ໄປອີກ, ທ່ານຄວນຈົດບັນທຶກຈຸດ ສຳ ຄັນເຫຼົ່ານີ້:
- ຢ່າປະຕິບັດການຂຽນອັກສອນຈາກພາກສ່ວນທີສາມໂດຍບໍ່ຕ້ອງເບິ່ງເຂົາເຈົ້າຫຼືຖ້າທ່ານໄວ້ໃຈຜູ້ຂຽນ. ນີ້ແມ່ນຍ້ອນວ່າສະຄິບເຫລົ່ານີ້ບໍ່ຖືກ ນຳ ໃຊ້ໃນກະດາດຊາຍແລະດັ່ງນັ້ນມັນອາດຈະ ທຳ ລາຍລະບົບຂອງທ່ານໂດຍບໍ່ຄາດຄິດຫລືເປັນອັນຕະລາຍ.
- ອັນທີສອງ, ອັກສອນເຫລົ່ານີ້ຫຼາຍບົດອາດຈະໃຊ້ເປັນອັກສອນ prerule ຫຼື postrule. ພິຈາລະນາເລື່ອງນີ້, ແນະ ນຳ ໃຫ້ໃຊ້ ຄຳ ເວົ້າເພື່ອຈຸດປະສົງທີ່ສອດຄ່ອງ.
- Nmap ໃຊ້ຖານຂໍ້ມູນ scripts/script.db ເພື່ອຄິດໄລ່ສະຄິບແລະປະເພດຕ່າງໆທີ່ມີໄວ້ໃນຕອນຕົ້ນ.
ເພື່ອເບິ່ງທີ່ຕັ້ງຂອງສະຄິບ NSE ທີ່ມີຢູ່ທັງ ໝົດ, ໃຫ້ ດຳ ເນີນການຊອກຫາສິ່ງ ອຳ ນວຍຄວາມສະດວກທີ່ຢູ່ໃນປາຍ, ເຊັ່ນນີ້:
$ locate *.nse /usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts/afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse /usr/share/nmap/scripts/ajp-auth.nse /usr/share/nmap/scripts/ajp-brute.nse /usr/share/nmap/scripts/ajp-headers.nse /usr/share/nmap/scripts/ajp-methods.nse /usr/share/nmap/scripts/ajp-request.nse /usr/share/nmap/scripts/allseeingeye-info.nse /usr/share/nmap/scripts/amqp-info.nse /usr/share/nmap/scripts/asn-query.nse ...
ສະຄິບ NSE ຖືກໂຫລດໂດຍໃຊ້ - ສະບັບ
ທຸງ, ເຊິ່ງຍັງຊ່ວຍໃຫ້ທ່ານສາມາດເອີ້ນໃຊ້ script ຂອງທ່ານເອງໂດຍການຈັດປະເພດ, ຊື່ແຟ້ມເອກະສານຫລືຊື່ຂອງໄດເລກະທໍລີທີ່ສະຄິບຂອງທ່ານຕັ້ງຢູ່.
syntax ສຳ ລັບການເປີດໃຊ້ສະຄຣິບມີດັ່ງນີ້:
$ nmap -sC target #load default scripts OR $ nmap --script filename|category|directory|expression,... target
ທ່ານສາມາດເບິ່ງລາຍລະອຽດຂອງຕົວອັກສອນທີ່ມີຕົວເລືອກ - script-help
. ນອກຈາກນັ້ນ, ທ່ານສາມາດສົ່ງຂໍ້ໂຕ້ແຍ້ງໄປຍັງສະຄິບ ຈຳ ນວນ ໜຶ່ງ ຜ່ານທາງເລືອກ --script-args
ແລະ --script-args-file
ຕົວເລືອກ, ຕໍ່ມາແມ່ນໃຊ້ເພື່ອໃຫ້ຊື່ filename ຫຼາຍກວ່າ ການໂຕ້ຖຽງເສັ້ນຄໍາສັ່ງ.
ເພື່ອປະຕິບັດການສະແກນດ້ວຍສະຄິບເບື້ອງຕົ້ນສ່ວນໃຫຍ່, ໃຫ້ໃຊ້ -sC
ທຸງຫຼືໃຊ້ທາງເລືອກ - ສະເພາະ = default
ທີ່ໄດ້ສະແດງໄວ້.
$ nmap -sC scanme.nmap.org OR $ nmap --script=default scanme.nmap.org OR $ nmap --script default scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.0027s latency). Not shown: 999 filtered ports PORT STATE SERVICE 80/tcp open http |_http-title: Go ahead and ScanMe! Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds
ເພື່ອໃຊ້ສະຄິບເພື່ອຈຸດປະສົງທີ່ ເໝາະ ສົມ, ທຳ ອິດທ່ານສາມາດໄດ້ຮັບ ຄຳ ອະທິບາຍສັ້ນໆກ່ຽວກັບສິ່ງທີ່ຕົວຈິງເຮັດ, ຕົວຢ່າງ, ຫົວຂໍ້ http-headers.
$ nmap --script-help http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST http-headers Categories: discovery safe https://nmap.org/nsedoc/scripts/http-headers.html Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.
ການໂຫລດສະຄິບ NSE ເພື່ອ ດຳ ເນີນການສະແກນ Nmap
ທ່ານສາມາດເລືອກຫລືໂຫລດສະຄິບເພື່ອ ດຳ ເນີນການສະແກນດ້ວຍວິທີການຕ່າງໆທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້.
ເມື່ອທ່ານຮູ້ວ່າສະຄິບເຮັດຫຍັງ, ທ່ານສາມາດເຮັດການສະແກນໂດຍໃຊ້ມັນ. ທ່ານສາມາດໃຊ້ສະຄິບດຽວຫລືໃສ່ລາຍຊື່ສະຄິບທີ່ແຍກດ້ວຍເຄື່ອງ ໝາຍ ຈຸດ. ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້ຈະຊ່ວຍໃຫ້ທ່ານສາມາດເບິ່ງ headers HTTP ທີ່ ກຳ ນົດໄວ້ໃນ webserver ທີ່ໂຮດເປົ້າ ໝາຍ.
$ nmap --script http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.27s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-headers: | Date: Wed, 15 Nov 2017 05:10:04 GMT | Server: Apache/2.4.7 (Ubuntu) | Accept-Ranges: bytes | Vary: Accept-Encoding | Connection: close | Content-Type: text/html | |_ (Request type: HEAD) 179/tcp filtered bgp 31337/tcp open Elite Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds
ທ່ານຍັງສາມາດໂຫລດສະຄິບຈາກ ໝວດ ໝູ່ ຫລືຈາກບັນຊີລາຍຊື່ຂອງ ໝວດ ໝູ່. ໃນຕົວຢ່າງນີ້, ພວກເຮົາ ກຳ ລັງໃຊ້ສະຄິບທັງ ໝົດ ເປັນປະເພດເລີ່ມຕົ້ນແລະອອກອາກາດເພື່ອ ດຳ ເນີນການສະແກນຢູ່ໃນ host 192.168.56.1.
$ nmap --script default,broadcast 192.168.56.1
ນີ້ຈະເປັນປະໂຫຍດເມື່ອທ່ານຕ້ອງການເລືອກສະຄິບທີ່ມີຮູບແບບຊື່ທີ່ມີໃຫ້. ຍົກຕົວຢ່າງໃນການໂຫລດສະຄິບທັງ ໝົດ ທີ່ມີຊື່ເລີ່ມຕົ້ນດ້ວຍ ssh, ດຳ ເນີນການ ຄຳ ສັ່ງດ້ານລຸ່ມຢູ່ເທິງ terminal:
$ nmap --script "ssh-*" 192.168.56.1
ນອກນັ້ນທ່ານຍັງສາມາດເລືອກສະຄິບໂດຍໃຊ້ ສຳ ນວນ boolean ເຊິ່ງທ່ານສາມາດສ້າງໂດຍ ນຳ ໃຊ້ the, ແລະ, ແລະບໍ່ແມ່ນຜູ້ ດຳ ເນີນການ. ແລະຊື່ໃນການສະແດງອອກ Boolean ອາດຈະແມ່ນ ໝວດ ໝູ່, ຊື່ຫລິ້ນຈາກ script.db, ຫລືທັງ ໝົດ.
ຄໍາສັ່ງຕໍ່ໄປນີ້ຈະໂຫລດສະຄິບຈາກປະເພດເລີ່ມຕົ້ນຫລືອອກອາກາດ.
$ nmap --script "default or broadcast" 192.168.56.10
ເຊິ່ງເທົ່າກັບ:
$ nmap --script default,broadcast 192.168.56.10
ເພື່ອໂຫລດສະຄິບທັງ ໝົດ ທີ່ ກຳ ລັງຍົກເວັ້ນຜູ້ທີ່ຢູ່ໃນ ໝວດ ຄຳ ຫຍໍ້, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງນີ້ຢູ່ປາຍທາງ.
$ nmap --script "not vuln" 192.168.56.10
ຄຳ ສັ່ງຕໍ່ໄປເບິ່ງຄືວ່າສັບສົນເລັກນ້ອຍແຕ່ມັນງ່າຍທີ່ຈະເຂົ້າໃຈ, ມັນເລືອກຕົວອັກສອນຕາມຄ່າເລີ່ມຕົ້ນ, ຫລືປະເພດອອກອາກາດ, ເຮັດໃຫ້ຜູ້ທີ່ມີຊື່ເລີ່ມຕົ້ນໂດຍ ssh-:
$ nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10
ສິ່ງທີ່ ສຳ ຄັນ, ມັນສາມາດສົມທົບປະເພດ, ຊື່ສະຄິບ, ໄດເລກະທໍລີທີ່ປະກອບດ້ວຍສະຄິບທີ່ ກຳ ຫນົດເອງ, ຫຼືການສະແດງອອກແບບບູຮານຄະດີເພື່ອໂຫລດສະຄິບ, ດັ່ງນີ້:
$ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10
ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງທີ່ສະແດງວິທີການສົ່ງຂໍ້ໂຕ້ແຍ້ງກັບສະຄິບທີ່ມີຕົວເລືອກ optionscript-args:
$ nmap --script mysql-audit --script-args "mysql-audit.username='root', \ mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"
ເພື່ອຜ່ານ ໝາຍ ເລກພອດ, ໃຫ້ໃຊ້ຕົວເລືອກ -p nmap:
$ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \ mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"
ຄຳ ສັ່ງຂ້າງເທິງ ດຳ ເນີນການກວດສອບຖານຂໍ້ມູນການຕັ້ງຄ່າຄວາມປອດໄພຂອງຖານຂໍ້ມູນ MySQL ທຽບກັບພາກສ່ວນຂອງດັດຊະນີ CIS MySQL v1.0.2. ທ່ານສາມາດສ້າງເອກະສານການກວດສອບທີ່ເປັນປະໂຫຍດຂອງທ່ານເອງ ສຳ ລັບການກວດສອບ MySQL ອື່ນໆ.
ນັ້ນແມ່ນ ສຳ ລັບດຽວນີ້. ທ່ານສາມາດຊອກຫາຂໍ້ມູນເພີ່ມເຕີມໃນ ໜ້າ ຜູ້ຊາຍ Nmap ຫຼືເຂົ້າໄປເບິ່ງການ ນຳ ໃຊ້ NSE.
ເພື່ອເລີ່ມຕົ້ນດ້ວຍການຂຽນສະຄິບ NSE ຂອງທ່ານເອງ, ໃຫ້ເບິ່ງຄູ່ມືນີ້: https://nmap.org/book/nse-tutorial.html
Nmap ແມ່ນເຄື່ອງມືທີ່ມີປະສິດທິພາບແລະເປັນປະໂຫຍດແທ້ໆທີ່ທຸກໆລະບົບຫລືຜູ້ບໍລິຫານເຄືອຂ່າຍຕ້ອງການໃນບັນດາສານປ້ອງກັນຄວາມປອດໄພຂອງລາວ - NSE ພຽງແຕ່ເພີ່ມປະສິດທິພາບໃຫ້ກັບມັນເທົ່ານັ້ນ.
ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ແນະ ນຳ ທ່ານໄປທີ່ Nmap Script Engine ແລະເບິ່ງວິທີການຊອກຫາແລະ ນຳ ໃຊ້ສະຄິບທີ່ມີຢູ່ພາຍໃຕ້ຫລາຍປະເພດ. ຖ້າທ່ານມີ ຄຳ ຖາມ, ຢ່າລັງເລທີ່ຈະຂຽນຄືນຫາພວກເຮົາໂດຍຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.