# -*- coding: binary -*- require 'msf/core/post/common' require 'msf/core/post/file' require 'msf/core/post/unix' module Msf class Post module Linux module System include ::Msf::Post::Common include ::Msf::Post::File include ::Msf::Post::Unix # # Returns a Hash containing Distribution Name, Version and Kernel Information # def get_sysinfo system_data = {} etc_files = cmd_exec("ls /etc").split() kernel_version = cmd_exec("uname -a") system_data[:kernel] = kernel_version # Debian if etc_files.include?("debian_version") if kernel_version =~ /Ubuntu/ version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "ubuntu" system_data[:version] = version else version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "debian" system_data[:version] = version end # Amazon elsif etc_files.include?("system-release") version = read_file("/etc/system-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "amazon" system_data[:version] = version # Fedora elsif etc_files.include?("fedora-release") version = read_file("/etc/fedora-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "fedora" system_data[:version] = version # Oracle Linux elsif etc_files.include?("enterprise-release") version = read_file("/etc/enterprise-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "oracle" system_data[:version] = version # RedHat elsif etc_files.include?("redhat-release") version = read_file("/etc/redhat-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "redhat" system_data[:version] = version # Arch elsif etc_files.include?("arch-release") version = read_file("/etc/arch-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "arch" system_data[:version] = version # Slackware elsif etc_files.include?("slackware-version") version = read_file("/etc/slackware-version").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "slackware" system_data[:version] = version # Mandrake elsif etc_files.include?("mandrake-release") version = read_file("/etc/mandrake-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "mandrake" system_data[:version] = version #SuSE elsif etc_files.include?("SuSE-release") version = read_file("/etc/SuSE-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "suse" system_data[:version] = version # Gentoo elsif etc_files.include?("gentoo-release") version = read_file("/etc/gentoo-release").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "gentoo" system_data[:version] = version # Generic elsif etc_files.include?("issue") version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'') system_data[:distro] = "linux" system_data[:version] = version # Others, could be a mismatch like ssh_login to cisco device else system_data[:distro] = "linux" system_data[:version] = '' end return system_data end end # System end # Linux end # Post end # Msf