ວິທີໃຊ້ສະຄິບ 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 ແລະເບິ່ງວິທີການຊອກຫາແລະ ນຳ ໃຊ້ສະຄິບທີ່ມີຢູ່ພາຍໃຕ້ຫລາຍປະເພດ. ຖ້າທ່ານມີ ຄຳ ຖາມ, ຢ່າລັງເລທີ່ຈະຂຽນຄືນຫາພວກເຮົາໂດຍຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.