参考:https://xz.aliyun.com/t/2354

流程如下:

image-20201003112146471

渗透注意事项

  • 检查内网监控防范系统
  • 谨慎使用ARP软件和大面积扫描软件
  • 使用目标网络中无空闲机器,作为打包对象
  • 使用内网大流量机器作为传输对象,如wsus服务
    器、视频会议系统
  • 使用临时机器打包、数据传输,不要使用已控机器,可利用wmi脚本或wmic远程操作
    渗透注意事项
  • 禁止使用psexec.exe
  • 打包时避开用户工作时间
  • 控制卷包大小<100M
  • 选择用户常用压缩软件
  • 错峰下载数据
  • 控制传输流量
  • 清除所有操作日志
  • 登录主机前先看看管理员是否在

信息收集

识别内网存活的主机 IP, 运行端口扫描和漏洞扫描获取可以利用的漏洞。

使用端口扫描工具可以实现主机发现的功能,但也有些动作小的主机发现工具(Kali),可以有效的发现存活主机。自己写个ping 的循环脚本也可以。

不受限的测试直接端口扫描了。

敏感数据信息

  • 高管/系统管理员/财务/人事/业务人员的个人电脑
  • 文件服务器/共享服务器
  • 邮件服务器
  • OA服务器
  • 数据库服务器

端口扫描

有授权的情况下直接使用 nmap 、masscan 等端口扫描工具直接获取开放的端口信息。
作为跳板机可以使用 Metasploit 做端口扫描,也可以在跳板主机上上传端口扫描工具,使用工具扫描。

入侵到服务器上也可以根据服务器的环境使用自定义的端口扫描脚本扫描端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# This script runs on Python 3
import socket, threading

def TCP_connect(ip, port_number, delay, output):
TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TCPsock.settimeout(delay)
try:
TCPsock.connect((ip, port_number))
output[port_number] = 'Listening'
except:
output[port_number] = ''

def scan_ports(host_ip, delay):

threads = [] # To run TCP_connect concurrently
output = {} # For printing purposes

# Spawning threads to scan ports
for i in range(10000):
t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
threads.append(t)

# Starting threads
for i in range(10000):
threads[i].start()

# Locking the script until all threads complete
for i in range(10000):
threads[i].join()

# Printing listening ports from small to large
for i in range(10000):
if output[i] == 'Listening':
print(str(i) + ': ' + output[i])

def main():
host_ip = input("Enter host IP: ")
delay = int(input("How many seconds the socket is going to wait until timeout: "))
scan_ports(host_ip, delay)

if __name__ == "__main__":
main()

漏洞扫描

有授权的情况下,使用绿盟极光、Nessus、Nexpose 等漏扫工具直接扫描目标,可以直接看到存活主机和主机的漏洞情况。

识别内网环境

获取目标的主机存活信息和端口开放信息后,就可以尝试分析目标的网络结构,安全防御策略。按照办公网和生产网分别说一下。

办公网

按照系统区分:

  • OA系统
  • 邮件系统
  • 财务系统
  • 文件共享系统
  • 域控
  • 企业版杀毒系统
  • 上网行为管理系统
  • 内部应用监控系统

按照网络区分:

  • 管理网段
  • 内部系统网段
  • 按照部门区分的网段

按照设备区分:

  • 个人电脑
  • 内网服务器
  • 网络设备
  • 安全设备

办公网的安全防护水平一般较差(相对),能绕过杀毒软件基本上就畅通无阻了,利用信任关系容易扩大攻击面,获取数据也比生产网简单。

生产网

按照系统区分:

  • 业务系统
  • 运维监控系统
  • 安全系统

按照网络区分:

  • 各不同的业务网段
  • 运维监控网段
  • 安全管理网段

根据目标开展的不同业务,对应的服务器可能存在不同的网段上,分析服务器上运行的服务和进程可以推断目标使用的运维监控管理系统和安全防护系统,可以大概推断出入侵目标的 IT 运维水平和安全防护水平,在接下来的入侵考虑采用什么样的方法。

漏洞验证/漏洞攻击

使用端口扫描、漏洞扫描验证扫描目标开放的端口,在对应端口上开放的服务,运行该服务的软件和版本号。
如果只是使用端口扫描,只是发现开放的端口,接着使用 nc 可以获取端口上服务的 banner 信息,获取 banner 信息后需要在漏洞库上查找对应 CVE,后面就是验证漏洞是否存在。如果是使用漏洞扫描工具可以直接获取对应端口上的漏洞,后面也是验证漏洞。
安全检查一般是尽可能的发现所有漏洞,对漏洞的风险进行评估和修复。入侵的话只关注高危远程代码执行和敏感信息泄露漏洞等可以直接利用的漏洞。

漏洞验证可以找对应的 CVE 编号的 POC、EXP,利用代码在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相关的漏洞验证或利用的工具。

Web服务器

常见的运维系统

一般分自动化部署和运维监控相关的的工具。漏洞可以通过搜索引擎搜索,github搜索,ExploitDB搜索,官网上的安全通告获取。
内网的通用类应用比较常见的问题是弱口令,如果一个管理员可以登录几个系统,那在这几个系统的账号、密码也基本上是一样的。

GitLab

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的项目仓库,可通过Web界面进行访问公开的或者私人项目。

Jenkins

Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大量的测试和部署技术。

Puppet

Puppet Enterprise专门管理基础设施即代码(IAC),在这种类型的IT基础设施配置过程中,系统用代码而不是脚本流程来自动构建、管理和配置。由于它是代码,整个过程易于重复。Puppet有助于更容易控制版本、自动化测试和持续交付,可以更快速地响应问题或错误。

  • 可利用漏洞,很少公开的POC
    • 反序列化
    • 远程命令执行
Ansible

Ansible是一种配置和管理工具,面向客户端的软件部署和配置,支持Unix、Linux和Windows。它使 用JSON和YAML,而不是IAC,根本不需要节点代理就可以安装。它可以通过OpenStack在内部系统上使用,也可以在亚马逊EC2上使用。

  • 可利用漏洞
    • 远程代码执行
Nagios

Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Zabbix

Zabbix 是一款强大的开源分布式监控系统, 能够将SNMPJMXZabbix Agent提供的数据通过WEB GUI的方式进行展示.

Cacti

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

邮件系统

一部分是使用腾讯企业邮箱、阿里企业邮箱的,很难有可利用的漏洞,另外一种是能独立部署的邮件系统,政企常用的邮箱应用:

  • Coremail
  • 亿邮
  • 35互联
  • TurboMail
  • Exchange
  • IBM Lotus

数据库

MySQL/MariaDB
MSSQL
  • 默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)
  • 攻击方法:
    • 爆破:弱口令/使用系统用户
    • 注入
  • 参考:
Oracle数据库
PostgreSQL数据库

PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术 大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。

MongoDB
Redis

常见的服务

FTP服务

FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)

攻击方式:

  • 爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter 以及msf中ftp爆破模块;
  • 匿名访问:用户名:anonymous 密码:为空或任意邮箱
  • 嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)
  • 后门 vsftp
  • 远程溢出
  • 跳转攻击
NFS服务
Samba服务
SSH服务
Telnet服务
  • 默认端口:21
  • 攻击方法:
    • 爆破
    • 嗅探
Windows远程桌面
  • 默认端口:3389
  • 攻击方法
    • 爆破
    • Shift粘滞键后门:5次shift后门
    • 利用ms12-020攻击3389端口
VNC服务

VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面。

  • 默认端口:5900+桌面ID(5901;5902)
  • 攻击方式:
    • 爆破:弱口令
    • 认证口令绕过:
    • 拒绝服务攻击:(CVE-2015-5239
    • 权限提升:(CVE-2013-6886)
SMTP协议

smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!

  • 默认端口:25(smtp)、465(smtps)
  • 攻击方式:
    • 爆破:弱口令
    • 未授权访问
POP3协议
  • 默认端口:109(POP2)、110(POP3)、995(POP3S)
  • 攻击方式:
    • 爆破;弱口令
    • 未授权访问;
DNS服务
  • 默认端口:53
  • 攻击方式:
    • 区域传输漏洞
IMAP协议
  • 默认端口:143(imap)、993(imaps)
  • 攻击方式:
    • 爆破:弱口令
    • 配置不当
SNMP协议
  • 默认端口:161
  • 攻击方式:
    • 爆破:弱口令
DHCP服务
  • 默认端口:67&68、546(DHCP Failover做双机热备的)
  • 攻击方式:
    • DHCP劫持;

提权和权限的维持

SecWiki 总结了:

工具

端口转发及代理类工具:

  • LCX:windows下面的端口转发软件。
  • sockscap:主要针对windows平台的端口转发和代理转发。
  • proxifier:跨平台的端口转发和代理工具,适用windows,linux, Macos平台,代理转发利器
  • Rsscoks:*nix平台下的端口转发和代理工具,配合proxychains好用到不行。
  • Proxychains:*nix平台下老牌的socks代理工具,一般的系统都会自 带,谁用谁知道。
  • ssh proxy:通过ssh做端口代理和转发,一般*nix系统都自带。
  • netcat:socat,hping,在很多情况下可以做端口转发和数据代理转 发。
  • metasploit:metasploit的后渗透模块中有不少代理模块和端口转发 模块。

在中转服务器上下载端口转发工具(加密压缩):

  • 能连接互联网下载
  • 通过 mstsc 的磁盘加载
  • 通过入口服务器中转
  • 通过远程控制软件上传

制作后门/木马程序

一般用Matisploit 的 msfvenom,使用参考:

SET 也可以生成后门程序,另外也可以关注一下最新的 Office、PDF 的漏洞

日志清理

在做日志清理前需要了解以下的内容:

  • 攻击和入侵很难完全删除痕迹,没有日志记录本身就是一种入侵特征;
  • 删除或清理入侵系统的本地日志不代表删除了痕迹,在网络设备、安全设备、集中化日志系统上仍然留存记录;
  • 留存的后门本身会有攻击者的信息;
  • 使用的代理或跳板可能会被反向入侵;
  • 在操作前检查是否有管理员登录;
  • 删除上传的工具,使用磁盘覆写的功能删除;

Windows日志类型

  • web日志:IIS、Apache以及其它web日志
  • 操作日志:3389登录列表、最近访问文件、IE等浏览
    器访问日志、文件访问日志
  • 登陆日志:系统应用日志-安全日志等
  • 攻击前和状态还原,尽量保持一致

Linux操作日志

  • Linux历史操作

    1
    unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
  • SSHD登陆记录
    删除~/.ssh/known_hosts中记录

  • 修改文件时间戳
    touch –r 原文件要修改文件

  • 删除临时使用文件,尤其是tmp目录

  • logtamper