内网渗透信息搜集骚姿势,从零基础到精通,收藏这篇就够了!

0# 前言:老朋友,好久不见!

各位观众老爷们,好久不见,甚是想念!最近在疯狂加班,总算挤出时间给大家码了这篇干货满满的文章~ 别催更啦,这就给你们安排上!
说到信息搜集,大家脑海里是不是立马浮现出Web外部打点的那些暴露信息?

But!在内网渗透中,信息搜集的重要性,那可是直接关系到你能不能成功拿下目标的关键因素!毫不夸张地说,信息搜集决定成败!

尤其是想搞持久化渗透,对内网信息的搜集更是重中之重。今天就给大家分享一些内网渗透的信息搜集骚操作,绝对让你眼前一亮!

1# 内网渗透信息搜集新思路:别再啃老黄历啦!

既然是“骚”姿势,那些常规的查系统信息啥的,咱就不浪费口舌了。咱要讲的是那些你可能没听过、没见过的“秘密武器”!

内网渗透,大致可以分为三个阶段:权限提升、权限维持、横向移动

每个阶段需要搜集的信息和发挥的作用都不一样,下面简单给大家捋一捋:

1.1 权限提升:别让菜鸟教程限制了你的想象力!

权限提升阶段,信息搜集重点关注以下几个方面:

  • 本机系统版本: 搞清楚系统是哪个版本的,才能对症下药。
  • 本机系统内核版本: 内核版本信息,提权的关键。
  • 本机系统出网情况: 能不能连外网,决定了你的攻击方式。
  • 本机开启的服务和端口: 看看有哪些服务在跑,有没有可利用的漏洞。
  • 本机系统环境变量: 环境变量里可能藏着敏感信息哦。
  • 本机运行的应用和进程: 关注高权限的进程,看看能不能从中搞点事情。
  • 本机计划任务内容: 计划任务也是提权的好帮手。
  • 本机中间件环境利用: 中间件漏洞,yyds!

骚思路: 找到系统上运行的高权限服务,然后想办法拿到它的配置文件或者直接接管,就能通过这个高权限服务来提权啦!

1.2 权限维持:让你的后门坚如磐石!

权限维持阶段,信息搜集要点如下:

  • 本机系统内核版本: 再次确认内核版本,方便后续操作。
  • 本机系统账号信息: 都有哪些用户,密码强度如何?
  • 本机系统用户组信息: 看看有没有可以利用的用户组。
  • 本机系统出网情况: 确保你的后门能稳定连接。
  • 本机计划任务内容: 安排一个计划任务,定期执行你的后门。
  • 本机运行的应用和进程: 找一个合适的进程,把你的后门藏进去。
  • 注册表信息利用(Windows): Windows注册表,一个充满秘密的地方。
  • WMI利用、映像劫持(Windows): 高级玩法,让你的后门更隐蔽。
  • SSH后门利用(Linux): Linux下的SSH后门,yyds!
  • 本机中间件环境利用: 再次利用中间件漏洞,巩固你的权限。

骚思路: 上线免杀内存马和C2,然后把进程迁移到系统进程里,再悄悄运行一个潜伏C2来持续控制;或者利用RDP/SSH/VNC这些常用的系统管理服务,插入影子账户和后门,就能“合法”地管理机器啦!

1.3 横向移动:像病毒一样扩散!

横向移动阶段,信息搜集重点关注:

  • 本机系统网卡信息: 了解网络环境,才能更好地渗透。
  • 本机系统建立的网络连接: 看看本机都连了哪些机器,有没有突破口。
  • 抓取本机系统账户对应的密码: 密码是通行证,有了它就能去其他机器溜达了。
  • 本机服务和应用对应的密码: 应用程序的密码也很重要。
  • 本机服务和应用的配置文件: 配置文件里可能藏着数据库连接信息等敏感信息。
  • 对内网网段进行存活探测: 看看有哪些机器还活着。
  • 对存活网段内机器进行端口探测和服务探测: 探测端口和服务,寻找可利用的漏洞。
  • 抓取内网的流量(tcpdump抓包): 流量里可能藏着账号密码等敏感信息。

骚思路: 通过查看本机建立的网络连接(netstat -an),发现本机调用了内网其他机器的服务(比如Redis),然后翻找本机上的配置文件或者命令行,就能接管Redis服务,再通过恶意利用内网其他机器上开放的服务(比如写入恶意SSH密钥),就能成功横向啦!

2# 内网渗透信息搜集真·骚姿势:前方高能!

上面只是开胃小菜,现在让我们来看看具体的一些内网渗透信息搜集骚操作,保证让你大呼过瘾!

2.1 针对文件内容的信息搜集:像福尔摩斯一样搜寻线索!

当你对内网一筹莫展的时候,入口机器上可能就藏着突破口! 仔细翻找本地的文件和建立的网络连接,说不定就能发现惊喜!

这里给大家准备了一份文件内容敏感词字典,拿走不谢!

jdbc:user=password=key=ssh-ldap:mysqli_connectsk-

通过快速遍历机器文件,搜索这些关键词,就能找到突破口! 这段代码我之前分享给过几个朋友,在实战中效果杠杠的!代码示例如下:

这是Python3的代码版本(支持Win和Linux):

#!/usr/bin/env python
# coding=utf-8
import os
import argparse
from tqdm import tqdm

def logo():
    logo0 = r'''
    _______           ______  _____       ____        __
    / ____(_)___  ____/ / __ / ___/      / __ __  __/ /_
  / /_  / / __ / __  / / / / / / / __/ / __/ / / / / /
  / /_/ / / /_/ / /___/ / / / / / __/ / __/ / / / / /
  /___/ /_____/ /_/ / /_/ / /_/ / /_  /_/   /_/_/ /_/
                                              ____/__,_/__/
  '''
    print(logo0)

def search_files(directory, extensions):
    files = []
    for root, _, filenames in os.walk(directory):
        for filename in filenames:
            for extension in extensions:
                if filename.endswith(extension):
                    files.append(os.path.join(root, filename))
    return files

def search_content(file_path, content):
    matching_lines = []
    try:
        with open(file_path, 'r', encoding='utf-8', errors='ignore') as file:
            for line_num, line in enumerate(file, 1):
                try:
                    if content in line:
                        matching_lines.append((line_num, line))
                except UnicodeDecodeError as e:
                    print(f"[-] Unicode decode error file {file_path}, line {line_num}: {e}")
                    print()
        return matching_lines
    except:
        print(f"[-] Error file {file_path}")
        print()

def write_to_file(output_file, file_path, matching_lines):
    with open(output_file, 'a', encoding='utf-8') as f:
        f.write(f"[+] File Path: {file_path}
")
        f.write(f"[=] Line Rows: {len(matching_lines)}
")
        for line_num, line in matching_lines:
            f.write(f"[~] In Line {line_num}: {line.strip()}
")
        f.write("
")

def main():
    parser = argparse.ArgumentParser(description="FindOS-Out")
    parser.add_argument("-n", "--name", help="Specify the suffix", required=True)
    parser.add_argument("-c", "--content", help="Specify file content", required=True)
    parser.add_argument("-o", "--output", help="Specify output file", default="findout.txt")
    parser.add_argument("-d", "--directory", help="Target directory", default="./")
    args = parser.parse_args()

    directory = args.directory
    extensions = args.name.split(',')
    content = args.content
    output_file = args.output

    files = search_files(directory, extensions)

    for file_path in tqdm(files, desc="Searching files", unit="file"):
        matching_lines = search_content(file_path, content)
        if matching_lines:
            write_to_file(output_file, file_path, matching_lines)

if __name__ == "__main__":
    logo()
    print("[+] Runing Search..")
    main()
    print("[+] Out to findout.txt..")

这是Python2的代码版本(支持Win和Linux):

import os
import argparse

def logo():
    logo0 = '''
    _______           ______  _____       ____        __
    / ____(_)___  ____/ / __ / ___/      / __ __  __/ /_
  / /_  / / __ / __  / / / / / / / __/ / __/ / / / / /
  / /_/ / / /_/ / /___/ / / / / / __/ / __/ / / / / /
  /___/ /_____/ /_/ / /_/ / /_/ / /_  /_/   /_/_/ /_/
                                              ____/__,_/__/
  '''
    print(logo0)

def search_files(directory, extensions):
    files = []
    for root, _, filenames in os.walk(directory):
        for filename in filenames:
            for extension in extensions:
                if filename.endswith(extension):
                    files.append(os.path.join(root, filename))
    return files

def search_content(file_path, content):
    matching_lines = []
    try:
        with open(file_path, 'r') as file:
            for line_num, line in enumerate(file, 1):
                try:
                    if content in line:
                        matching_lines.append((line_num, line))
                except UnicodeDecodeError as e:
                    print("[-] Unicode decode error in file %s, line %d: %s" % (file_path, line_num, e))
        return matching_lines
    except:
        print("[-] Error file %s" % (file_path))

def write_to_file(output_file, file_path, matching_lines):
    with open(output_file, 'a') as f:
        f.write("[+] File Path: %s
" % file_path)
        f.write("[=] Line Rows: %d
" % len(matching_lines))
        for line_num, line in matching_lines:
            f.write("[~] In Line %d: %s
" % (line_num, line.strip()))
        f.write("
")

def main():
    parser = argparse.ArgumentParser(description="FindOS-Out")
    parser.add_argument("-n", "--name", help="Specify the suffix", required=True)
    parser.add_argument("-c", "--content", help="Specify file content", required=True)
    parser.add_argument("-o", "--output", help="Specify output file", default="findout.txt")
    parser.add_argument("-d", "--directory", help="Target directory", default="./")
    args = parser.parse_args()

    directory = args.directory
    extensions = args.name.split(',')
    content = args.content
    output_file = args.output

    files = search_files(directory, extensions)

    for file_path in files:
        matching_lines = search_content(file_path, content)
        if matching_lines:
            write_to_file(output_file, file_path, matching_lines)

if __name__ == "__main__":
    logo()
    print("[+] Runing Search..")
    main()
    print("[+] Out to findout.txt..")

使用方法如下:

python FindOS-Out.py -n .txt,.ini,.yaml,.php,.jsp,.java,.xml,.sql -c jdbc:mysql -d D:/
python FindOS-Out.py -n .txt,.ini,.yaml,.php,.jsp,.java,.xml,.sql -c jdbc:mysql -o output.txt -d /

为啥要用Python写呢?

因为DMZ的入口机器(通常是Linux服务器)都默认装了Python3和Python2,我们可以直接利用环境来跑脚本,而且代码不需要额外的pip包,简单又好用!

2.2 针对数据库的信息搜集:大海捞针,一招制敌!

连上MySQL数据库后,怎么快速找到包含user字段的库和表呢?

SELECT
     TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    COLUMN_NAME AS column_name
FROM
     INFORMATION_SCHEMA.COLUMNS
WHERE
     COLUMN_NAME LIKE '%user%';

连上Oracle数据库后,怎么快速找到包含user字段的库和表呢?

SELECT
     owner AS database_name,
    table_name,
    column_name
FROM
     all_tab_columns
WHERE
     column_name LIKE '%USER%'
ORDER BY
     owner, table_name, column_name;

注意:Oracle数据库查询区分大小写,MySQL不区分大小写,查询Oracle时要注意大小写!

2.3 针对Win的信息搜集:玩转Windows,不在话下!

常规命令就不贴了,网上搜一大堆。

查看启动程序信息:

wmic startup get command,caption

查看连接过的Wifi名称:

netsh wlan show profiles

查看指定Wifi的密码:

netsh wlan show profile name="wifi名称" key=clear

远程桌面连接记录:

cmdkey /l

探测网段存活(Ping):

for /l %i in (1,1,255) do @ping 192.168.123.%i -w 1 -n 1|find /i "ttl="

关闭防火墙:

netsh firewall set opmode disable //Windows Server 2003 及之前的版本
netsh advfirewall set allprofiles state off //Windows Server 2003 及之后的版本

常见中间件及其配置目录(仅供参考):

中间件 目录1 目录2
MySQL C:ProgramDataMySQLMySQL Server X.Y C:Program FilesMySQLMySQL Server X.Y
SQL Server C:Program FilesMicrosoft SQL ServerMSSQLXX.MSSQLSERVERMSSQL
Oracle Database C:apporacleproduct .2.0dbhome_1database
PostgreSQL C:Program FilesPostgreSQLXXdata
Redis C:Program FilesRedis
Apache C:Program FilesApache GroupApacheX.Xconf C:Program Files (x86)Apache Software FoundationApacheX.Xconf
Nginx C: ginxconf C:Program FilesNginxconf
Tomcat C:Program FilesApache Software FoundationTomcatX.Xconf

提权后,别忘了用户信息搜集:

C:UsersXXXDesktop  //用户桌面内容
C:Users
816Downloads  //用户下载内容
C:Users
816Documents  //用户文档内容
C:Users
816AppDataLocal  //用户软件信息【仅个人安装选项】
2.4 针对Linux的信息搜集:玩转Linux,如鱼得水!

常规命令就不贴了,网上搜一大堆。

查看目前谁在登录,当前在干什么:

w

最后登录用户的列表:

last

查看用户敏感信息:

//列出所有的超级用户账户
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'

//查看是否存在空口令用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow

//查看远程登录的账号
awk '/$1|$6/{print $1}' /etc/shadow

查看其他用户的历史命令文件:

cat /home/user/.bash_history
cat /root/.bash_history

列出iptables的配置规则:

iptables -L

查找当前可读可写可执行的目录到res.txt:

find / -type d -perm /u=rwx -user $(whoami) > res.txt

搜索包含SSH密钥的文件(一般在 /home 下,但找不到可以全目录):

grep -ir "BEGIN DSA PRIVATE KEY" /home/*
grep -ir "BEGIN DSA PRIVATE KEY" /*
grep -ir "BEGIN RSA PRIVATE KEY" /home/*
grep -ir "BEGIN RSA PRIVATE KEY" /*
grep -ir "BEGIN OPENSSH PRIVATE KEY" /home/*
grep -ir "BEGIN OPENSSH PRIVATE KEY" /*

常见配置文件路径:

```
/apache/apache/conf/httpd.conf
/apache/apache2/conf/httpd.conf
/apache/php/php.ini
/bin/php.ini
/etc/apache/apache.conf
/etc/apache/httpd.conf
/etc/apache2/apache.conf
/etc/apache2/httpd.conf
/etc/apache2/sites-available/default
/etc/apache2/vhosts.d/00_default_vhost.conf
/etc/httpd/conf.d/httpd.conf
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/php.ini
/etc/init.d/httpd
/etc/php.ini
/etc/php/apache/php.ini
/etc/php/apache2/php.ini
/etc/php/cgi/php.ini
/etc/php/php.ini
/etc/php/php4/php.ini
/etc/php4.4/fcgi/php.ini
/etc/php4/apache/php.ini
/etc/php4/apache2/php.ini
/etc/php4/cgi/php.ini
/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/phpmyadmin/config.inc.php
/home/apache/conf/httpd.conf
/home/apache2/conf/httpd.conf
/home/bin/stable/apache/php.ini
/home2/bin/stable/apache/php.ini
/NetServer/bin/stable/apache/php.ini
/opt/www/conf/httpd.conf
/opt/xampp/etc/php.ini
/PHP/php.ini

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

猜你喜欢

转载自blog.csdn.net/Libra1313/article/details/146692455
今日推荐