Closed2

KRB_AP_ERR_SKEW(Clock skew too great)エラーの回避

T_KovacsT_Kovacs

Kerberosではチケットの有効期間や再利用防止のため、サーバとクライアントの時刻が±5分以内である必要がある。
このため、攻撃者が impacket などで TGT/TGS を取得しようとした際、DCとの時刻がズレていると Clock skew too great エラーが発生する。

sudo ntpdate -b <IP> などで無理やりDCとホストの時刻合わせをするのもいいが、HTBの環境では結局すぐに同期がずれて都度時刻合わせをする羽目になるので、faketimeコマンドを使ったwrapperを用意する。

T_KovacsT_Kovacs

faketime wrapper

事前準備: ntpdatefaketimeのインストール

$ sudo apt install -y ntpdate faketime

~/.zshrcに以下を仕込む

# faketime wrapper
ft() {
	if [ $# -lt 2 ]; then
		echo "Usage: ft <IP> <command> [args...]"
		return 1
	fi

	local ip="$1"
	shift
	local time="$(ntpdate -q "$ip" | cut -d ' ' -f 1,2)"

	if [ -z "$time" ]; then 
		echo "Failed to get offset from ntpdate"
		return 1
	fi

	faketime "$time" "$@"
}

読み込み

$ source ~/.zshrc

使用方法、使用例

$ ft                 
Usage: ft <IP> <command> [args...]

$ft <IP> impacket-getTGT '$domain/$user:$pass'

実際に起きている事

$ faketime "$(ntpdate -q ${ip} | cut -d ' ' -f 1,2)" <command> [args...]

$ faketime "$(ntpdate -q ${ip} | cut -d ' ' -f 1,2)" impacket-getTGT '$domain/$user:$pass'
このスクラップは1ヶ月前にクローズされました