Path: blob/master/modules/post/linux/gather/enum_protections.rb
19591 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Post6include Msf::Post::File7include Msf::Post::Linux::Kernel8include Msf::Post::Linux::System910def initialize(info = {})11super(12update_info(13info,14'Name' => 'Linux Gather Protection Enumeration',15'Description' => %q{16This module checks whether popular system hardening mechanisms are17in place, such as SMEP, SMAP, SELinux, PaX and grsecurity. It also18tries to find installed applications that can be used to hinder,19prevent, or detect attacks, such as tripwire, snort, and apparmor.2021This module is meant to identify Linux Secure Modules (LSM) in addition22to various antivirus, IDS/IPS, firewalls, sandboxes and other security23related software.24},25'License' => MSF_LICENSE,26'Author' => 'ohdae <bindshell[at]live.com>',27'Platform' => ['linux'],28'SessionTypes' => ['shell', 'meterpreter'],29'Notes' => {30'Stability' => [CRASH_SAFE],31'SideEffects' => [],32'Reliability' => []33}34)35)36end3738def run39distro = get_sysinfo4041print_status "Running module against #{session.session_host} [#{get_hostname}]"42print_status 'Info:'43print_status "\t#{distro[:version]}"44print_status "\t#{distro[:kernel]}"4546print_status 'Finding system protections...'47check_hardening4849print_status 'Finding installed applications via their executables...'50find_exes5152print_status 'Finding installed applications via their configuration files...'53find_config5455if framework.db.active56print_status 'System protections saved to notes.'57end58end5960def report(data)61report_note(62host: session,63type: 'linux.protection',64data: data,65update: :unique_data66)67end6869def check_hardening70begin71if aslr_enabled?72r = 'ASLR is enabled'73print_good r74report r75end76rescue RuntimeError => e77vprint_status(e.to_s)78end7980begin81if exec_shield_enabled?82r = 'Exec-Shield is enabled'83print_good r84report r85end86rescue RuntimeError => e87vprint_status(e.to_s)88end8990begin91if kaiser_enabled?92r = 'KAISER is enabled'93print_good r94report r95end96rescue RuntimeError => e97vprint_status(e.to_s)98end99100begin101if smep_enabled?102r = 'SMEP is enabled'103print_good r104report r105end106rescue RuntimeError => e107vprint_status(e.to_s)108end109110begin111if smap_enabled?112r = 'SMAP is enabled'113print_good r114report r115end116rescue RuntimeError => e117vprint_status(e.to_s)118end119120begin121if lkrg_installed?122r = 'LKRG is installed'123print_good r124report r125end126rescue RuntimeError => e127vprint_status(e.to_s)128end129130begin131if grsec_installed?132r = 'grsecurity is installed'133print_good r134report r135end136rescue RuntimeError => e137vprint_status(e.to_s)138end139140begin141if pax_installed?142r = 'PaX is installed'143print_good r144report r145end146rescue RuntimeError => e147vprint_status(e.to_s)148end149150begin151if selinux_installed?152if selinux_enforcing?153r = 'SELinux is installed and enforcing'154else155r = 'SELinux is installed, but in permissive mode'156end157print_good r158report r159end160rescue RuntimeError => e161vprint_status(e.to_s)162end163164begin165if yama_installed?166if yama_enabled?167r = 'Yama is installed and enabled'168else169r = 'Yama is installed, but not enabled'170end171print_good r172report r173end174rescue RuntimeError => e175vprint_status(e.to_s)176end177end178179def find_exes180apps = {181'aa-status' => 'AppArmor',182'aide' => 'Advanced Intrusion Detection Environment (AIDE)',183'apparmor' => 'AppArmor',184'auditd' => 'auditd',185'avast' => 'Avast',186'bastille' => 'Bastille',187'bulldog' => 'Bulldog',188'chkrootkit' => 'chkrootkit',189'clamav' => 'ClamAV',190'elastic-agent' => 'Elastic Security',191'firejail' => 'Firejail',192'firestarter' => 'Firestarted',193'fw-settings' => 'Uncomplicated FireWall (UFW)',194'getenforce' => 'SELinux',195'gradm' => 'grsecurity',196'gradm2' => 'grsecurity',197'honeyd' => 'Honeyd',198'iptables' => 'iptables',199'jailkit' => 'jailkit',200'logrotate' => 'logrotate',201'logwatch' => 'logwatch',202'lynis' => 'lynis',203'nagios' => 'nagios',204'oz-seccomp' => 'OZ',205'paxctl' => 'PaX',206'paxctld' => 'PaX',207'paxtest' => 'PaX',208'proxychains' => 'ProxyChains',209'psad' => 'psad',210'rkhunter' => 'rkhunter',211'snort' => 'snort',212'tcpdump' => 'tcpdump',213'thpot' => 'thpot',214'tiger' => 'tiger',215'tripwire' => 'tripwire',216'ufw' => 'Uncomplicated FireWall (UFW)',217'wireshark' => 'Wireshark'218}219220apps.each do |app, appname|221next unless command_exists? app222223path = cmd_exec "command -v #{app}"224next unless path.start_with? '/'225226print_good "#{app} found: #{path}"227report "#{appname}: #{path}"228end229end230231def find_config232apps = {233'/bin/logrhythm' => 'LogRhythm Axon',234'/etc/aide/aide.conf' => 'Advanced Intrusion Detection Environment (AIDE)',235'/etc/chkrootkit' => 'chkrootkit [chkrootkit -q]',236'/etc/clamd.d/scan.conf' => 'ClamAV',237'/etc/fluent-bit' => 'Fluent Bit Log Collector',238'/etc/freshclam.conf' => 'ClamAV',239'/etc/init.d/avast' => 'Avast',240'/etc/init.d/avgd' => 'AVG',241'/etc/init.d/ds_agent' => 'Trend Micro Deep Instinct',242'/etc/init.d/fortisiem-linux-agent' => 'Fortinet FortiSIEM',243'/etc/init.d/kics' => 'Kaspersky Industrial CyberSecurity',244'/etc/init.d/limacharlie' => 'LimaCharlie Agent',245'/etc/init.d/qualys-cloud-agent' => 'Qualys EDR Cloud Agent',246'/etc/init.d/scsm' => 'LogRhythm System Monitor',247'/etc/init.d/sisamdagent' => 'Symantec EDR',248'/etc/init.d/splx' => 'Trend Micro Server Protect',249'/etc/init.d/threatconnect-envsvr' => 'ThreatConnect',250'/etc/logrhythm' => 'LogRhythm Axon',251'/etc/opt/f-secure' => 'WithSecure (F-Secure)',252'/etc/otelcol-sumo/sumologic.yaml' => 'Sumo Logic OTEL Collector',253'/etc/rkhunter.conf' => 'rkhunter',254'/etc/safedog/sdsvrd.conf' => 'Safedog',255'/etc/safedog/server/conf/sdsvrd.conf' => 'Safedog',256'/etc/tripwire' => 'TripWire',257'/opt/COMODO' => 'Comodo AV',258'/opt/CrowdStrike' => 'CrowdStrike',259'/opt/FortiEDRCollector' => 'Fortinet FortiEDR',260'/opt/FortiEDRCollector/scripts/fortiedrconfig.sh' => 'Fortinet FortiEDR',261'/opt/McAfee' => 'FireEye/McAfee/Trellix Agent',262'/opt/SumoCollector' => 'Sumo Logic Cloud SIEM',263'/opt/Symantec' => 'Symantec EDR',264'/opt/Tanium' => 'Tanium',265'/opt/Trellix' => 'FireEye/McAfee/Trellix SIEM Collector',266'/opt/avg' => 'AVG',267'/opt/bitdefender-security-tools/bin/bdconfigure' => 'Bitdefender EDR',268'/opt/cisco/amp/bin/ampcli ' => 'Cisco Secure Endpoint',269'/opt/cisco/amp/bin/ampcli' => 'Cisco Secure Endpoint',270'/opt/cyberark' => 'CyberArk',271'/opt/ds_agent/dsa' => 'Trend Micro Deep Security Agent',272'/opt/f-secure' => 'WithSecure (F-Secure)',273'/opt/fireeye' => 'FireEye/Trellix EDR',274'/opt/fortinet/fortisiem' => 'Fortinet FortiSIEM',275'/opt/isec' => 'FireEye/Trellix Endpoint Security',276'/opt/kaspersky' => 'Kaspersky',277'/opt/logrhythm/scsm' => 'LogRhythm System Monitor',278'/opt/secureworks' => 'Secureworks',279'/opt/sentinelone/bin/sentinelctl' => 'SentinelOne',280'/opt/splunkforwarder' => 'Splunk',281'/opt/threatbook/OneAV' => 'threatbook.OneAV',282'/opt/threatconnect-envsvr/' => 'ThreatConnect',283'/opt/traps/bin/cytool' => 'Palo Alto Networks Cortex XDR',284'/sf/edr/agent/bin/edr_agent' => 'Sangfor EDR',285'/titan/agent/agent_update.sh' => 'Titan Agent',286'/usr/bin/linep' => 'Group-iB XDR Endpoint Agent',287'/usr/bin/oneav_start' => 'threatbook.OneAV',288'/usr/lib/Acronis' => 'Acronis Cyber Protect',289'/usr/lib/symantec/status.sh' => 'Symantec Linux Agent',290'/usr/local/bin/intezer-analyze' => 'Intezer',291'/usr/local/qualys' => 'Qualys EDR Cloud Agent',292'/usr/local/rocketcyber' => 'Kseya RocketCyber',293'/var/lib/avast/Setup/avast.vpsupdate' => 'Avast',294'/var/log/checkpoint' => 'Checkpoint',295'/var/pt' => 'PT Swarm'296}297298apps.each do |path, appname|299next unless file_exist?(path) || directory?(path)300301print_good "#{appname} found: #{path}"302report "#{appname}: #{path}"303rescue RuntimeError304print_bad("Unable to determine state of #{appname}")305next306end307end308end309310311