mirror of
https://github.com/nmap/nmap.git
synced 2025-12-07 05:01:29 +00:00
* Updated the way authentication works on smb -- it's significantly cleaner now * smb-enum-shares.nse gives significantly better output now (it checks if shares are writable) * Added a script that checks if smbv2 is enabled on a server * Added smb-psexec, a script for executing commands on a remote Windows server. I also included some default scripts, a compiled .exe to run everything, and a ton of documentation (in the form of NSEDoc) * Added 'override' parameters to some of the functions in smb.lua, which lets the programmer override any field in an outgoing SMB packet without modifying smb.lua. * Lots of random code cleanups in the smb-* scripts/libraries
67 lines
1.5 KiB
Lua
67 lines
1.5 KiB
Lua
description = [[
|
|
Check whether or not a server is running the SMBv2 protocol.
|
|
]]
|
|
---
|
|
--@usage
|
|
-- nmap --script smbv2-enabled.nse -p445 <host>
|
|
-- sudo nmap -sU -sS --script smbv2-enabled.nse -p U:137,T:139 <host>
|
|
--
|
|
--@output
|
|
-- Host script results:
|
|
-- |_ smb-v2-enabled: Server supports SMBv2 protocol
|
|
--
|
|
-- Host script results:
|
|
-- |_ smb-v2-enabled: Server doesn't support SMBv2 protocol
|
|
-----------------------------------------------------------------------
|
|
|
|
author = "Ron Bowes"
|
|
copyright = "Ron Bowes"
|
|
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
|
categories = {"default", "safe"}
|
|
|
|
require 'msrpc'
|
|
require 'smb'
|
|
require 'stdnse'
|
|
|
|
hostrule = function(host)
|
|
return smb.get_port(host) ~= nil
|
|
end
|
|
|
|
local function go(host)
|
|
local status, smbstate, result
|
|
local dialects = { "NT LM 0.12", "SMB 2.002", "SMB 2.???" }
|
|
local overrides = {dialects=dialects}
|
|
|
|
status, smbstate = smb.start(host)
|
|
if(not(status)) then
|
|
return false, "Couldn't start SMB session: " .. smb
|
|
end
|
|
|
|
status, result = smb.negotiate_protocol(smbstate, overrides)
|
|
if(not(status)) then
|
|
if(string.find(result, "SMBv2")) then
|
|
return true, "Server supports SMBv2 protocol"
|
|
end
|
|
return false, "Couldn't negotiate protocol: " .. result
|
|
end
|
|
|
|
return true, "Server doesn't support SMBv2 protocol"
|
|
end
|
|
|
|
action = function(host)
|
|
local status, result = go(host)
|
|
|
|
if(not(status)) then
|
|
if(nmap.debugging() > 0) then
|
|
return "ERROR: " .. result
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
return result
|
|
end
|
|
|
|
|
|
|