ひとこと

― 今日のひとこと ―
年に1回くらい、EVE Onlineやりたくなるのよね。
(2025.12.24)

2025年12月24日水曜日

202512近況

今年は色んなことがあった。

 

まず、年度頭に年収1000万円で従業員を雇った。

上期の半ばに主要な取引先企業の部署が実質消滅し、 売上が一時的にゼロになった。

実のところ自分ひとりならそれでも年間の人件費はなんとかなる見込みだったが、従業員を雇用しているとなると話は別で、その人の人件費をなんとか稼がなければならない。

あらゆるコネを辿り、仕事を作り、なんとか従業員の残業ゼロを維持しながら、V字回復して売上は年間目標を達成できる見込みだ。

いやー・・・大変だったなぁ。

去年は楽してたけど、会社として少しずつでも規模を拡大しようとしたら、会社員時代の数倍働かなくてはどうにもならない。

今年は少なくとも2倍は働いている。役員には残業の概念がありません。


そして上期の終わりには某大手企業と提携した。

その企業の鳴り物入りの新サービス、実はうちのサービスのOEMみたいなものです。

というかサービスの核となる部分はほぼ自分がやるので、うちと直接契約すれば半額以下の価格で同じようなサービスを受けられるのに勿体ないなーと思いつつ、やはり大企業のマーケティング予算や社会的信用ってすげーと感心するばかり。

来年はそっちの仕事が増えそう。増えてほしい。 

それをフックにして他の某大企業とも提携に向けた話を進めている。

 

新たに若干名の採用を検討しているが、なかなか難航している。

そもそもこの業界、人材があまりいない・・・。

うちは知名度もないし。

来年度に入社してくれたとして創業3期目のベンチャーなわけだけど、この業界にはベンチャー気質の人が少ない。

どうしよう。

従業員は残業ゼロ、自社や顧客に迷惑をかけないなら働く時間も自由だしフルリモートだし、基本給だけで年収1000万円オーバー出している実績もあるのだから、少なくとも表面的な待遇はだいぶ良いんだけどなぁ。

※でもちょっと要件は高めかもしれない。

※一応書いておくと、このブログにご連絡いただいても反応できません。 


とりあえず、来年は・・・どうなるかわからん!

けどまぁ、何とかなるだろう。

 

稀にプライベートのPCを起動し、ブラウザを立ち上げてこのブログのタイトルを目にする度、随分遠くに来たなと思う。

新人SEだったのはもう10年以上も前の話。紆余曲折を経て、今は幸せな家庭を持ち、細々と会社を経営している。

次の10年で何が起こるだろう?

家族に不自由させないように、うまく生き残っていられたらいいなぁ。

 

2024年12月14日土曜日

202412近況

「仕事、このままだとつまらないな」

「何か新しいことをやってみたい」

「もっとのんびりしたい。何なら仕事したくない」

要するに「やりたくないことはやりたくない、でもやったことないことはやってみたい、とはいえ総合的には楽をしたい」という邪な動機で起業・独立して7か月が経つ。

なお、家庭を持つ身として収入を維持する必要があるのでお金はしっかり稼がなければならない、というのが前提条件であることは言うまでもない。

(サラリーマンとしての年収は1000万円を超えていたので、この条件は意外と厳しい。。)


そんなうまくいくはずがない。だっておれはエンジニアリング一筋で他のことはろくにできない、甲斐性なしな世間知らず。

うまくいくはずがないんだ・・・

 

なんてあまり考えることはなく、その時その時でできることをやりたいようにやっていたら、なんか今のところはうまくいっている。

 

売上すべてを自分の所得にすることはできないが、年間の手取りは会社員時代を少し上回るペース。

それでいて月々の実質稼働は10日~15日程度なので毎月1~2週間くらいは割とのんびり(しようと思えば)できる。

従業員側だけでなく会社側の手続きも、税理士に依頼している法人確定申告を除いて全部自分でやらなくてはならないので、税や社会保険や経理やマーケティングや営業や人事労務や契約管理やなんやと新しい経験には事欠かない。

まあやりたくないことも多少やらざるを得ないが以前よりだいぶマシ。だって完全に自分のためにやってるわけだから納得度合いが全然違う。


自社では、競合がいない(代わりに需要がまだ小さい…)ニッチなサービスを展開している。

他社との差別化を図りたい業界大手など複数の有名どころと協業の具体的な話を進めており、地道というか地味なマーケティング活動も実りつつあって来年度はもっと充実するだろう。


次の1年が楽しみ、なんていつ以来だろうか。社会人になって初めてかもしれない。


2023年10月25日水曜日

202310近況

近況と銘打った下書きが3つくらい溜まっているがそれは放置して新たに書き始める。時間がないので思いつくさま書いていく。

 

某外資企業に転職してきて2年以上経つが、その間にお給料がだいぶ伸びて年収1000万円はとうに超えた。
給料とは別に数年先まで謎の分割ボーナスを受け取れるがそれも何百万円か。やったぜ。(全部受け取る前に辞めそうだけど)

今までの会社もそうだったが、自分は普通に仕事をしているだけのつもりで、むしろ年々手際が良くなった分だけNon-Billableなタスクをヒィヒィ言いながらこなしているくらいなのに、なぜか評価してもらえている。ありがたい話だ。

 

転職はどんどんした方がいいと思っている。給料を上げる一番手っ取り早い方法だ。
きちんと評価して実績を還元してくれる会社に巡り合えたらそこで頑張ればいい。

新卒で入社した会社の同期の半数は、未だにその小さな会社にいる。彼らは自分以上に優秀なのに、勿体ない。
そういう人はきっと何万人も何十万人もいるのだろう。勿体ない。


今の会社ではとにかく文字通り侵入することに懸命であり、気付けばとある分野で一番詳しくなっていた。
好きこそものの上手なれ。名立たる有名企業のオフィスやデータセンターも、ポイントを押さえてしまえば大体なんとかなる。必要なのは知識と経験、工夫と努力と胆力だ。

日本ではニッチな分野だし、これを専門に起業したいくらいだが、今ほど稼げるだけの需要はなさそうに思える。
治安がぶっちぎりで良いというのも影響しているのだろうが、日本はここでも遅れている。

とにかく、もう少しだけ今の会社でレベルアップしよう。

 

車の免許を取った。まさか自分が車を運転することになるとは。 それが嫌で地元を離れたのに。
子供がいると仕方ない。どうしても車があった方が圧倒的に便利だ。

 

新卒で入社した会社でお世話になった方に、何年か振りに近況報告のメールを送った。
もうそのメールアドレスは使われておらず、メールがその方に届くことはなかった。
まぁezwebのドメインだもんな、仕方ない。
こうして縁がひとつ消え、おれの交友関係がさらに狭まるのであった。


セキュリティ業界について。

ITまわりのトレンドは、自動運転やらAIやら目まぐるしく変化していくが、セキュリティの問題は常についてまわる。
なので食いっぱぐれのない業界ではあり、新卒でセキュリティ関連業務にあたる人も増えているように感じられ、おそらく今後も拡大していくものと考えている。
求人の数や給与水準も上がっているように見える。

でも、この業界でキャリアアップするにはセキュリティの何かが好きじゃなければ厳しいと思う。
マルウェア解析でもExploit開発でも、フィッシングでもCTFでもインシデントレスポンスでも何でもいい。
好きじゃないとアップデートできなくなる。ライフステージが変わって自分の時間がなくなると特に。

大きな声ではいえないが、自分はもともと少し頭のねじの緩い人種で、子供の頃は探偵やハッカーみたいなものになんとなく憧れていた。
通学中に拾った手帳に載っていた電話番号に電話をかけて、うまく相手の名前を聞き出したのは中学生の頃だ。
なんとも幼稚ではあるが、そういう傾向は今でも残っていて、それが今の仕事の原動力になっているのだと思う。

例えばMr.Robotを観て、主人公のような生き方や仕事に本気で憧れるなら、この業界でやっていく素地があるように思う。

業界にどんな会社や仕事があるのか、どうステップアップしていけばいいか、少しはアドバイスできるかも。
(防御側はよく知らないけど。コンサルや所謂ハッキングをする攻撃系なら多少はわかる。)

こういう相談とかトレーニングとかやるオンライン教室の方が侵入しまくるビジネスより需要あるかもなー・・・。


2021年6月1日火曜日

OSWEについて

OSWE(Offensive Security Web Expert)試験に合格しました。

この試験は、簡単にいうと

  • 2つのWebアプリケーションそれぞれに対して
  • 「認証バイパス」と
  • 「遠隔コード実行」の両方を実現し、
  • それらを1つの攻撃コードとして実行可能なプログラム(orスクリプト)を作り
  • 脆弱性と攻撃コードの詳細なレポートを提出する(全部英語)

というもの。
テストは約48時間、レポート提出まで更に24時間、合計約72時間という制限時間がある。

AWAE(Advanced Web Attacks and Exploitation)というトレーニングと試験はセットになっている。
トレーニングは60日か90日かを選択できる。試験はトレーニング後120日以内だかに受けなければならない。

詳細はこちら↓
https://www.offensive-security.com/awae-oswe/

これでまた少し自信ついたな。
当面はこういうトレーニングは受けられないけど、スキルアップに繋がるからまた別のものを受けたい。


2021年1月21日木曜日

Hackmeすごい

Hackmeという、株式会社ネットファイアさんが公開しているWebサイト。

Webサイトのハッキングをゲーム感覚で体験できる非常に優れたもので、そういった類のWebサイトの中では日本だと最も古く有名なのではないかと思います。

自分は2013年と2016年にその攻略記事を書いていました。
それがいつの間にやらまとめサイトに載せられていたからか、2021年の今でも、結構アクセスがあるのです。

 

そんな昔のチャレンジサイトの攻略情報を求めている人がこんなにもいるのか。攻略記事へのアクセス数を見る度にそう思う。

だって2013年の時点で「Hackmeって結構前からあるよなー」って思ってたくらいだぞ。
それだけ面白い、良いサイトということだろうか。


ハッキングというのは大きな言葉で、サイバーセキュリティの攻撃系の技術分野は多岐に渡る。
(Web、ネットワーク、アプリケーション、カーネル、プロトコル...etc)

もしHackmeでサイバーセキュリティに興味を持ってもらえたなら、自分がどんな分野に興味があるのか、一度ゆっくり考えてみるといいかもしれない。

もちろん、攻撃系ではなく防御系(SOC, CSIRT, フォレンジック...etc)でもいい。

 

とにかくこの分野は広すぎて、すべてを極めるのは無理だ。
なので、自分に合った方向性にあたりをつけて、とりあえず手を動かしてみることをお勧めする。


2020年9月25日金曜日

OSCP受験メモ

白状すると8月に1回落ちました。
自分史上、本気で準備して不合格だった試験は初めてで、超へこみました。
というか「これ落ちるかも…?」と試験終盤に頭をよぎった時からへこんでました。
でも案外、試験後に寝て起きたらすっかり回復してました。

9月に自費で再受験してようやく合格。
嬉しさもあるけど、それより「もう受けなくてもいいんだ」という安堵感の方がよっぽど強い。

OSCPがハードな試験なのは間違いない。
技術的スキルも必要だが、それよりも精神力が重要な試験だ。
つまり、OSCP受験を通して、自分は技術的にも精神的にも成長したと言える。

思うさまメモする。


準備

過去の投稿でも書いている通り、ガイドを読了した後、残る休暇3週間はほぼ1日1台のペースでラボマシンを攻略していた。
難しいやつでも簡単なやつでも、とにかく目標は1日1台。

30分で終わることもあれば17時間かかることもあったが、とにかく毎日新しい挑戦をする。
使ったことのない攻撃手法やツール、名前も知らなかったサービス、ニッチな脆弱性攻撃。
ターゲットを攻略していくことで少しずつ自信を積み重ねていく。

実際、この期間で合格に必要な技術的スキルはほぼ身に着いていたと思う。

休暇が明け、7月1日に仕事に復帰すると、さすがにペースを保つのがきつくなってきた。
何しろ7月中旬から1か月以上ほぼ間断なく出張なのだ。
現地での仕事に備えてやっておくことも多い。

そういうわけで、7月上旬はBOFを復習。
ガイドを読み、エクササイズをやり直し、『dostackbufferoverflowgood』と『Brainpan』もやった。

7月中旬から7月末にかけて再びラボに戻り、5台ほど攻略。
8月上旬はHTBをいくつかやってみたが、正直あまり面白くなかったのでこれはすぐやめた。

受験(1回目)

会社の都合で8月中に受験しなければならなかったため、3連休で受験。
エナジードリンクを買い込み、お夜食も用意して臨んだ。22時開始。

開始3時間で2台攻略し、35得点。
かなり良いペースだった。

更に6時間後、3台目を攻略。この時点で55得点。
残る15時間で15得点できれば合格。20点のマシンを1台倒せばいい。
少し頭が疲れているがエナジードリンクで誤魔化す。この調子でもう1台攻略してしまおう。
この時はかなり希望を持っていた。

数時間が経過し、一向に糸口が掴めずにいた。
管理者権限どころかinitial shellも取れずにいる。
稼働しているサービスに対し、考えられるあらゆる攻撃を仕掛けた。
しかしいずれも奏功せず。時間だけが過ぎていった。

さらに数時間が経過。まったく進展なし。
何かを見落としているのだろうとは思っていたが、頭が疲れ果てており何も思いつかない。
少し休むべきではないかと思ったが、同じ配点だった3台目に6時間かかったことを考えると、寝てしまっては時間が足りなくなる可能性があった。
焦りが大きくなり、それに比例して「落ちたくない」という心理も強くなっていき、
しかし活路は見出せず、ノイローゼのような精神状態である。
もう1台の方に切り替えようかとも考えたが、行き詰っているマシンよりも配点が高い相手を今から倒せるとも思えず。

結果として、15時間まったく進捗なし。55得点で不合格が確定した。
これが60点ならまぁ、残り24時間でラボレポートとエクササイズレポートを提出すれば10点が加点されて70得点となり、合格ラインに達する可能性はあった。
しかし55点。レポートを作る元気もなく、OSCPの窓口に「レポートは出さない」とメールしてバタンキュー。

こうして1回目の挑戦は終わった…。

反省点

寝なかったこと。それに尽きる。

事前に、「睡眠は重要です」とか「睡眠が奨励されます」とか、そういった内容の受験記はいくつか読んではいた。
しかし睡眠の重要性を過小評価し、自分の体力や気力を過信していた。そんなつもりはなくても、そうだった。
試験後に疲れ果てて眠り、目を覚ました瞬間に4台目の攻略法がわかったと同時に、自分の過ちに気付いた。。

試験機の難易度

どんなマシンが出てくるのか事前にはわからないので、難易度の感じ方は自分の得手不得手に左右されると思う。

自分の感覚だと、ガイドの内容を正しく理解していれば35点(一番簡単なマシンで10点+BOFマシンで25点)は間違いなく取れる。

20点マシンとBOFじゃない方の25点マシンはラボの多くのマシンより難しく、しかしラボの最難関級のマシンほどではないと感じた。

準備(2回目)

再受験まで4週間空けなければならない決まりだったが、その間は正直ほとんど何もしなかった。
技術的には充分合格ラインだと思っていたし、仕事が忙しかったというのもある。
HTBで1つ2つやってはみた。それだけ。結果には全然寄与しなかったと思う。

受験(2回目)

21時開始。

2時間で2台攻略し、35得点。さらに2時間弱でもう1台攻略し、開始4時間ほどで55得点。
前回を上回るハイペースでかなり順調だったが、前回はここから詰まったんだよなと思い返し、少し緊張した。

その後4時間、4台目の20点マシンに取り組むも進展なし。前回と同じ展開になるかと少し暗い気持ちになるも、前回の反省を活かしてここで仮眠を取ることに。
寝ることで時間が足りなくなったらどうしよう、と思わないでもなかったが同じ轍を踏みたくなかった。
他人には理解し難いかもしれないが、自分が「試験中に寝る」など従来あり得なかったことだ。

6時間睡眠。残り時間は10時間。

2時間ほど4台目に取り組むもやはりまったく進まない。少し焦り始めた。

思い切って5台目に取り組む。
実はここまでの間に使えそうな脆弱性は見つけていて、なんとなく攻略の仮説は立てていたが、決定的なピースが欠けているような状態だった。
3時間ほどかけてinitial shellを取得し、さらに1時間ほどで権限昇格に成功。
この時点で80得点、残り6時間弱。

点数は充分だしレポート用の証跡の確認がしたかったので、4台目は捨てて、他の4台で攻撃手順を再現しながらスクリーンショットやコマンドを集めていった。

2時間ほど残して試験を終了した。

レポート作成

有志が作ったテンプレートを使った。
日本語訳して内容を確認し、いくらか文章と構成を変えた。
内容を細かく作り込むのに案外時間がかかり、10時間ほどかけて45ページ作成。

この時、記載したExploitの証跡に若干の不備があることに気付いた。
(実行結果に影響はないが、レポートとしては美しくないものだった)

とはいえもうVPNは切られているし、証跡を取り直すことはできない。
そのまま決められた手順でレポートをアップロードし、窓口にメール連絡した。

その後

数時間後、レポートを受領した旨の通知が来ていた。
さらに50時間ほどして、合格を知らせる通知が届いた。

全体の振り返り

5月にトレーニングを開始してから合格するまで約4か月。
この間、ペネトレーションテストの方法論を体系的に習得し、効果的な手順で侵入・権限昇格するスキルを得ることができた。
様々なプロトコルやサービス、製品に対する攻撃ベクトルを理解し、OSごとの着眼点を把握できた。

トレーニング期間や試験はハードだったが、おかげで独学より圧倒的に早く成長できた。

ある程度は基礎知識が必要だが、この分野でキャリアを積みたいと考えているあらゆる人におすすめできる良いトレーニング・試験だと思う。

ちょっとお高いけどね。

2020年7月7日火曜日

OSCP学習 #5

やはりBrainpanだけでは不安だったので、dostackbufferoverflowgoodをやってみた。
少し学びはあった(OSがx64だとしてもそのアプリケーションがx86ならx86のshellcodeが要るらしい)ものの、
難易度としてはBrainpanと同じくらいで、OSCPガイドのエクササイズより一段二段易しい。

やっぱり試験もそんな感じの難易度なのかな。

では明日からラボに戻ろう。

2020年7月5日日曜日

OSCP学習 #4

6月は最終的に23台のマシンを攻略し、今月は今のところバッファオーバーフロー(BOF)を重点的に学習している。
原理自体は元々理解しているので、それを実行するまでの手順を学ぶ感じ。

OSCPガイドにはWindowsとLinuxそれぞれでのBOFについて記載があり、ラボで提供されるクライアントでそれらを試すことができる。
その両方のケースについて、改めてガイドを読み直しつつ、ラボのクライアントで再現していった。
ガイドを見ながら1度解き、手順をメモし、次はガイドを見ずに実行。
それでBOFの大まかな流れと細かいタスクを把握することができた。

ただ、これだけでは不安である。
もっと他のマシンでBOFを試し、実践力をつけたい。

OSCPラボではマシンについての情報がIPアドレス以外に提供されないため、
どれがBOFの脆弱性を含むマシンなのか、1台1台取り組んでみないとわからない。
なのでハッキングチャレンジサイトでBOFの練習をすることにした。

調べてみるとBrainpanなるマシンが丁度良いとのこと。
さっそくTryHackMeに登録して挑戦してみた。
説明文には「OSCPの実践に最適」とあるな。よし。

結果は・・・


簡単すぎない?
OSCPガイドのエクササイズより単純で、なんだかあまり学ぶところがなかった。
(BOF後の権限昇格の場面では学びがあったけど。manでshell取れるとは知らなかった)
しかしRedditなんかでは「OSCP本試験のBOFマシンはガイドより簡単」みたいな書き込みもあるし、
こんなものなのか・・・?

Githubで公開されているdostackbufferoverflowgoodというコース?もなかなか良いらしい。
一応やっておくかどうか少し迷う。


現在のところ、試験の準備状況としては悪くない気がする。
BOFは理解できた&ある程度は実践できるようになったので、あとは24時間で5台攻略という速度が必要かな。
今月中にラボを最低あと7台やって、あとはやっぱりノートテイキングの良い方法を見つけねば。。

2020年6月28日日曜日

OSCP学習 #3

現在までに21台攻略。
未だにノートテイキングに迷っており、いい解決案はない。

情報収集の自動化・効率化の重要性も強く感じており、
特にEnumerationと権限昇格(PE)の段階ではいかに速く多くの情報を集めてアタリを付けるかが大事だ。
PWKの仮想マシンにpip3をインストールするとマシンが起動しなくなるためAutoreconを使えないのが痛い。
PEの穴を探す段階でも特に有効なツールを見つけられていない。
linpeasは良さそうだけどラボの数台のマシンで試してみても何もアウトプットされず終了する。

Big4と呼ばれる、ラボの四天王みたいなマシンに鹿児島であたってしまい、
その攻略には17時間かかった。こんなの試験で出たら時間足りないぞ!

というわけで効率化できるツールを色々集めたいが、ラボも進めたい...
もうすでに時間が足りない!

2020年6月20日土曜日

OSCP学習 #2

前回#1を書いてから1週間ほど経過。
1日1台を目安にOSCPのラボを使った学習は毎日続けており、現在まで順調に14台のマシンを攻略した。

1日1台。
案外これがきついのだ。
難易度はピンキリではあるが、これまで手持ちの知識だけで攻略できたマシンは1台だけであり、
基本的にはトライ&エラー&リサーチ&シンキングをひたすら繰り返すことになる。

聞いたことすらなかったプロトコルやソフトウェアを相手にすることも多く、
情報収集して、検討して、試して、うまくいかず、原因を推測し、情報収集して、試して...
これは楽しくもあり苦しくもあり、「もうフォーラムでヒント見ちゃおうか...」と考えてしまうこともあるが、
いやここで諦めたらだめだ!Try Harderだ!と持ち前の負けず嫌い精神で踏ん張り、ということを毎日やるわけだ。

おかげでOSごとのコマンドや便利なツール類を順調にストックできており、
攻略の着眼点や、ある種の嗅覚のような感覚が少しずつ研ぎ澄まされている気がする。
何より精神的にタフになりつつある。長い日には10時間くらいやってるからな。
バッファオーバーフローが必要なマシンには未だ出会っていないが、まぁそこはHack the Boxでもなんとかなるし。。
今はこのまま進めていこう。

マシンを攻略した後は、フォーラムでそのマシンの掲示板を覗き、他の受講者がどこで躓いているのか、
それに対してどんなヒントが示されているのかを軽くチェックする。
「あーあれってそういう風にも解決できたの!?」って新しい発見もたまにある。
難しいマシンだと、「もう何日もこのマシンで悩んでいます」なんて書かれていることもよくあるので、
一応どれも数時間でクリアできている自分はやはり良い按配で学習が進んでいるのかなと少し安心してしまう。

急遽来週に鹿児島まで行かなければならなくなったり、再来週には休暇が終わりまた仕事が忙しくなったりと、
これからは腰を据えて勉強するのが難しくなるかもしれない。
しかし出来るだけ1日1台ペースを保っていきたい。。

2020年6月11日木曜日

OSCP学習 #1

2020年4月末頃、会社の上司(趣味が"冒険"のアメリカ人。よくジャングルに消える)から「OSCP受けたい人いたら経費で受けられるよ」と連絡があり、もともと自分で受けるつもりだったのでこれ幸いと申し込み。約10万円浮きました。

OSCPというのは海外のセキュリティに関する民間資格で、サイバー攻撃に特化したハンズオンの試験が行われるなかなか難しいと評判のもの。
試験は48時間あり、最初の24時間で5台のマシンをハッキングして管理者権限を取り、次の24時間でその過程についてレポート(全部英語)を作成し提出するというもの。
うーんめんどくさい。

Kioptrixの記事は#2を書く気力がないのでOSCPの方をメモしておこう。。

----------------------------------------------------------------------------

OSCPはいきなり受けることもできるが、基本的にはラボ利用権を購入し、ラボで学習した上で受験する形になる。
利用権は30日/60日/90日から選択し、その期間内はラボのマシンに攻撃を仕掛けることができる。
また、権利発生初日にテキスト(これも全部英語)がPDFで送られてくるので、それを読んで基礎を学習することができる。

自分は5月9日から90日間で申し込んでおり、6月5日時点でテキスト読了&6月10日時点でラボ4台攻略済みという状態。

----------------------------------------------------------------------------

■テキストについて

850ページ超あります。以前は350ページ程度だったらしいが最近アップデートされたとか。
複数のブログ等では、以前のバージョンでの受験記なんかで「1か月かけて読みました」という記述を目にするが、今や850ページ・・・
全部英語だしふつーに読んでたら2か月くらいかかりそうだぞ。

ということで、まずテキストを機械翻訳。
会社がNDA付きで導入している翻訳サービスを利用。翻訳対象ファイルのサイズ制限によりテキストを8分割して翻訳依頼キューに登録。
翻訳完了通知が来たのが3日後の朝。8つのうち1つは翻訳不可とのエラーだったので、それは更に2分割して再度翻訳依頼。
次の朝には2つのうち1つは翻訳できたので(もう1つはやはりエラー)、そのまま読み進めることに。

内容としては、Bashの使い方やfind, vi, grep等とそれに類する便利なコマンドの利用方法にはじまり、
DNSからのホスト名列挙やポートスキャン等のEnumerationテクニックや、
RFIやSQLインジェクション等のWeb系、Active Directory、ラテラルムーブメント等の技術やツールについてなど、
25章に渡って解説されるもの。
途中途中でエクササイズと称したハンズオンがあり、それをやると理解が深まる。やらなくてもいい。

仕事が忙しかった日や2度の抜歯で悶え苦しんでいた期間を除き、だいたい20日くらいかけて読了した。

自分の場合は、体感的には6割くらいは既知の内容だったものの、Enumerationの知見が広がったこと、
ADやラテラルムーブメント等のRedteam的な部分を多少体系的に理解できたのがよかった。
ただ、バッファオーバーフローについてはもう少し手を動かしてスムーズに実践できるようになるべきだな。

あらゆる技術を実践するにあたり、自分の得意な部分(完全に自力でできること)や不得手な分野(何かを参考にしないと自力でできないこと)を細かく確認できたと思う。

----------------------------------------------------------------------------

■ラボについて

ちゃんと数えてないけど多分50以上のIPがあります。
VPNでラボのネットワークに繋ぎ、任意のIPを攻撃し、管理者権限またはシステム権限を取得し、Shellを得て、特定のテキストファイルを探すという流れ。

IPによってはどうも指定されたテキストファイル以外にも重要情報があるそうで、そこについてはノーヒント。
とりあえず、今のところ自分は指定のテキストファイルだけを探すようにしている。
情報を見つける見つけないよりも高権限のShellを奪うまでの技術習得を優先したいので。

試験本番ではMetasploitやSqlMap等の一部の強力なツールと商用ソフトウェアの利用が制限ないし禁止される。
https://support.offensive-security.com/oscp-exam-guide/#exam-restrictions:-metasploit

理由は「プロセスの自動化ではなく脆弱性の特定と悪用に関するスキルを評価するため」らしい。
ラボ環境においては学習のため積極的にそれらのツールを使うべきとテキストに記載されているとはいえ、
自分はラボでも基本的にそれらは使わないか、使ったとしてもその後に使わないパターンでも攻略するようにしている。

例えば、ラボのとあるIPを攻略するにあたり、どうもSMBがあやしいという時。
Enumerationの結果EternalBlueの脆弱性がありそうだということがわかるも、
カーネルレベルのメモリの脆弱性をネットワーク経由で悪用する(=そのExploitを作れる)ほどの力も時間もない。いやある方がおかしいけど。
Webで見つけたExploitの概要を読んでもピンとこない。
ここで、MetasploitのEternalBlueに関するExploitモジュールを使えばシステム権限のShellをスムーズに取得することはできた。
その後Githubで改めてExploitを見つけ、単発的なコード実行ができることは確認した。
それ単体ではShellが取れないので、「ただファイルを作成するだけ」というPythonのExploitを他で見つけ、FTPコマンドを持つテキストファイルを作成するよう書き換えた。
(1つ目のExploitで繰り返しechoリダイレクトしてもよかったがスマートではないしレスポンス時間に難があった)
自身の環境でFTPサービスを起動し、nc.exeやwhoami.exeをFTP用ディレクトリに準備し、Shell用のポートをlistenしておく。
その後、2つ目のExploitで作成したFTPコマンドファイルを使って、1つ目のExploitでFTPを実行し、自身の環境からexeファイルをダウンロードし、再度1つ目のExploitでnc.exeによるreverse shellのコマンドを実行し、listenしておいたポートでShellを取得。
whoamiで現在のユーザを確認。システム権限であることが明示的にわかったのでdirコマンドでフラグを検索。
これで無事クリア。という流れ

難易度は様々ありそうだけどたしかにKioptrixと似ているものもある。

----------------------------------------------------------------------------

■今後の学習の流れ

来月中にラボを30台以上は攻略し、バッファオーバーフローを完全に修め、準備が整ったと判断できたら試験に申し込むつもり。
契約上は12月頭までに受ければいいことになっているがラボは8月上旬までしか使えないし、8月には受験したい。

今のところ1日1台くらいのペースで攻略できているが、難しいやつにあたると3日とかかかりそうではある。。
Try Harderだぜ!

2019年12月30日月曜日

Kioptrix攻略 #1

サイバーセキュリティのオフェンシブな技術を実践すべく敢えてセキュリティホールを持つよう構築された仮想マシンが集うサービス、VulnHub。
2020年内のOSCP取得に向けた学習を兼ねて、VulnHubの仮想マシンの中でも最もOSCPっぽいと名高いKioptrixシリーズに挑戦する。

過去にこのブログで攻略記事を書いていたHackmeは、用意されたWebアプリケーション上の脆弱性を各レベルで1つずつ突いていく構成だった。
少なくとも自分がクリアしたLv1~Lv4については、Webセキュリティにおける脆弱性攻撃の基礎を手で学ぶための、どちらかというと初学者向けのサービスだ。
Kioptrixは、ネットワーク越しに仮想マシンの管理者権限を取得するという目的において、攻撃面はWebに限定されない。
自分が現在クリアしているLv1~Lv2に関していえば、むしろWebだけでは不充分だ。実際の侵入テストと同じく、ステップバイステップで情報を集め、攻撃を試していく必要がある。
その分だけHackmeより多角的・実践的な技術が求められるというわけだ。

とはいえ自分もこういったテストの経験はあまりないので、試行錯誤しながら進めている。
同じくトライ&エラーで進めた方が様々勉強になるのは明らかなので、「何から手を付ければいいのか全然わからねぇ...」というシャイボーイ以外はここでページを閉じ、まず自力で解いてみることをお勧めする。

なお、ただ解き方を書き残すのではなく、どう考えて何をしたのか?をちまちま書いているため長いです。

仮想マシンの立ち上げについては詳細割愛する。
Kioptrixのrarファイルをダウンロードして展開してVirtualBoxで仮想マシンを立ち上げてネットワークアダプタをNATネットワークにするだけ。たぶん。
(Lv1だけはちょっと設定が面倒なので、このサイトを参考にしてください。)
攻撃にはKali Linuxを使う。基本的に、自身が操作するのは全部Kali。こちらの立ち上げやツールの使い方等についても割愛。


では!




0.Kioptrixマシンを探す

KioptrixマシンはKaliと同じネットワークに存在するはず。なのでまずKaliのIPアドレスを確認する。
ifconfig


自分の環境ではKaliのIPアドレスは10.0.2.5なので、10.0.2.5/24を探索対象にしよう。
nmap 10.0.2.5/24 -T5
単純にnmapでネットワークスキャン。
KioptrixマシンのIPがわかればいいので"-T5"オプションで高速化する。


開いているサービスを見るに、10.0.2.6がKioptrixマシンのようだ。

1.ポートスキャン

KioptrixマシンのIPアドレスを指定して、サービスのバージョンを詳しく調べてみる。
nmap -Pn -sV -p- 10.0.2.6
前回の結果で疎通可能なのは明らかなので"-Pn"でpingを省略し、"-p-"で全ポートを指定した上で"-sV"でバナー情報を取得する。


うーん古い!(古いVMだから当然だけど)
Webシステムのプラットフォームの脆弱性診断なんかをやっていると、よく使われるサービスのバージョン感というか、「このサービスの最新はこのバージョンで、どのバージョンにはこういう脆弱性が報告されている」というのをなんとなく覚えてしまう。
なのでOpenSSH 2.9やらApache 1.3.20やらを見ると、まるで古代遺跡を掘り当てた考古学者のように、これは大変なお宝が眠っていそうだぜ!とわくわくするのだ。
バージョンは出ていないがSambaも気になる。

2.Webアプリケーションのチェック

脆弱性情報を調べる前に、ポート80/443でWebサーバが稼働しているようなので、とりあえずブラウザでアクセスしてみよう。

"Test Page"?ほーん
どんなページがあるか探してみる。
python3 dirsearch.py -u http://10.0.2.6/ -e * -x 403,404
Webサイトのページを探索するツールは色々あるが、自分はdirsearchをよく使う。結果は...
  [01:18:34] 200 -    3KB - /index.html
  [01:18:35] 301 -  294B  - /manual  ->  http://127.0.0.1/manual/
  [01:18:40] 200 -   27B  - /test.php
  [01:18:40] 200 -    4KB - /usage/

RCEか、それに繋がるような脆弱性があるかもしれないと考え、test.phpとusage/を軽く確認したが、特に実りなし。
本格的にWebの脆弱性を探し始めるとかなり時間がかかってしまうので保留とする。
ちなみに、usage/のページに記載されていた、ページで利用されているのであろうソフトウェア「Webalizer Version 2.01」にはRCEの脆弱性(CVE-2002-0180)が報告されている。
しかしそのCVEに対応するExploitは見つけられなかった。

3.サービスのチェックと脆弱性攻撃

nmapで得たバナー情報によると、Kioptrixマシン上で気になるサービスが3つ稼働している。
  • OpenSSH 2.9p2
  • Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
  • Samba
OpenSSHやApacheのバージョンはずいぶん古いし、Sambaは比較的最近でもマルウェアが感染活動に悪用することで知られている。
この3つについて、RCE等でCVSSの高い(必要条件の緩いRCEなので体感CVSS7.0以上くらいの)脆弱性を順番に探していく。

OpenSSH 2.9p2

Webでざっと調べたところ、該当しそうなCVEは4つ。ただ、これらのExploitは見つけられなかった。
  • CVE-2002-0639
  • CVE-2002-0640
  • CVE-2006-5051
  • CVE-2010-4478

OpenSSHにはユーザ列挙の脆弱性がある(&それ脆弱性じゃないぞと公式見解が出た)ことは有名なので、それを試してみる。
Metasploitを使う。
msfconsole
SSHのユーザ列挙の脆弱性をsearchで見つけ、実行する。
use auxiliary/scanner/ssh/ssh_enumusers
set RHOSTS 10.0.2.6
set THREADS 8
set USER_FILE '/usr/share/wordlists/metasploit/unix_users.txt'
run
結果は...
    [+] 10.0.2.6:22 - SSH - User 'adm' found
    [+] 10.0.2.6:22 - SSH - User 'bin' found
    [+] 10.0.2.6:22 - SSH - User 'daemon' found
    [+] 10.0.2.6:22 - SSH - User 'ftp' found
    [+] 10.0.2.6:22 - SSH - User 'games' found
    [+] 10.0.2.6:22 - SSH - User 'gopher' found
    [+] 10.0.2.6:22 - SSH - User 'halt' found
    [+] 10.0.2.6:22 - SSH - User 'lp' found
    [+] 10.0.2.6:22 - SSH - User 'mail' found
    [+] 10.0.2.6:22 - SSH - User 'news' found
    [+] 10.0.2.6:22 - SSH - User 'nobody' found
    [+] 10.0.2.6:22 - SSH - User 'operator' found
    [+] 10.0.2.6:22 - SSH - User 'postgres' found
    [+] 10.0.2.6:22 - SSH - User 'root' found
    [+] 10.0.2.6:22 - SSH - User 'sync' found
    [+] 10.0.2.6:22 - SSH - User 'uucp' found
結構たくさんユーザがいるようで。
ちなみにこれらのユーザに対してhydraで総当たり攻撃してもパスワードは見つけられませんでした。
リストはMetasploit標準のものを使ったとはいえ、そんな文字通り力づくな方法でクリアできたらつまんないよね。

というわけで、OpenSSHから攻めるのは諦める。

Samba

Webアプリケーションの脆弱性は見つかっていないので、気分転換のためApacheではなくSambaを調べることに。
smbclient -L 10.0.2.6
これで普通に接続しただけではバージョンはわからなかった。
まぁこんなのでわかるならきっとnmapが突き止めてくれているか。
他にバージョンを確認する手段を調べたところ、Metasploitに該当するモジュールがあることがわかったので早速使ってみる。

use auxiliary/scanner/smb/smb_version
set RHOSTS 10.0.2.6
set THREADS 8
run

あっさりわかった。Samba 2.2.1aだ。このバージョンに対応する、ちょうどいいCVEは...
  • CVE-2003-0201
この脆弱性はOSごとのExploitが複数公開されている。
Metasploitモジュール含め4つほど試してみたが、うまくいったのはこの1つだけ。
https://www.exploit-db.com/exploits/22469
他はモジュールのコード修正したりgccのオプションいじってみたりしたけど実りなし...ここですごく時間がかかった。

Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b

「"Apache 1.3.20" "exploit" -"kioptrix"」といったキーワードでWeb検索すると、何やらものものしい名称のExploitがすぐに見つかった。
このExploitのREADMEを読めば書いてあるが、なぜそんな名前に...
https://github.com/heltonWernik/OpenLuck

git clone https://github.com/heltonWernik/OpenFuck.git
gcc -o OpenFuck OpenFuck.c -lcrypto
./OpenFuck 0x6b 10.0.2.6 -c 50

4.コマンド実行

SambaやApacheの脆弱性を突いて、Kioptrixマシン上でコマンドを実行できるようになった。
まず確認すべきは自分の権限だ。whoamiで簡単に確認する。
whoami
"root"と出力され、管理者権限でコマンドを実行できていることがわかる。

次に、既存ユーザのパスワードを調べてみる。
cat /etc/passwd
cat /etc/shadow
OpenSSHでのユーザ列挙で判明していたユーザ名がちらほら。
これらの表示結果を基にパスワードハッシュを解析してみたが、10分ほど経過しても解析しきれなかったので中断。
ハッシュ解析にはJohn the Ripperを使った。このツールの使い方はHackme攻略 Lv3の記事を参照。

既存ユーザがだめなら新しいユーザを作ってやる、と考えユーザ作成コマンドを実行
useradd fakeuser
adduser fakeuser
...するも悉く失敗。
仕方ないのでrootのパスワードを変更する。
passwd
これでSSHでログインできるようになったので、試してみる。

やったぜ。

さて、VulnHubのページには"Flag(s) EMail"と記載されているので、メールを探す。
いくつかディレクトリを眺めていると、/var/mail/rootというパスを見つけた。
cd /var/mail
more root
これでファイルを読んでみると...

"If your are reading this, you got root. Congratulations. Level 2 won't be as easy..."

Lv1クリア!


なお、ふと「これsendmailかな」と思いsendmailコマンドを打ってみるとビンゴだったので、moreじゃなくてmailコマンドでもメールが読めます。
あとついでにSSH接続でuseraddしたらユーザ作成できたけど理由がよくわかってない

--------------------------------

久し振りに長めの記事を書いたけどめちゃくちゃ疲れた...Lv2以降書くの億劫だな...


201912近況

2019年1月時点の状況を読むに、このブログを開設したのは2013年01月05日らしいので、もう7年も前だ。

7年。

社会人8年目くらいか。
もうとても新人とは言えないし、SE(システムエンジニア/ソフトウェアエンジニア)でもない。
結婚して、3度も転職して、嬉しいことも嫌なことも数えきれないほどあった。
重いものだなあ、7年とは。

----------------------
さて、サイバーセキュリティ業界で生きていくことを決めた自分は2019年1Qにコンサルファームに転職した。
コンサルファームといっても、エンジニアリング専門の部署に所属しているので、職種はセキュリティエンジニアのまま。

かなり大きな会社だけあって、クライアントも世を響かす有名企業ばかりだ。
楽な案件は無い(というか無茶振りしかない)がそれだけ鍛えられているようにも感じる。

主に脆弱性診断のような技術的な業務を担当するが、コンサルワークも経験した。
スケールとしては大きな案件で、かなりハードかつ正直コンサルワークは向いてなくてしにそうだった。。
一応なんとかなったけど、まさにハードシンクハードワークを地で行くんだなあと感じた。

最近新設のチームに移った(移らざるを得なくなった)がなんと外国籍率100%。
全員ごく最近入社したばかりで、海外の企業から移ってきた人も多い。
なのでチームの公用語は英語。メールもチャットもミーティングも英語。
入社時は「英語は読み書きしかできないんですけど大丈夫ですか?」と3回くらい訊いて、
「問題ない、チームもクライアントも日本人ばかりだから」と言われていたのに
今になって英語が必要になるとは。。

メールやチャットはともかく、英会話はかなり辛い。
まず聞き取りがあまりできない。なんとなく言ってる意味はわかるけど細かい部分がよくわからない。
英語耳のテキスト買ったりベルリッツに通ったりしてるがこればかりはどうしても時間がかかりそうだ。
自分の言いたいことは身振り手振りを交えてなんとか伝えられるが、あまりスムーズにはいかない。

日本の会社で日本人が、言葉の壁で孤立感を覚えるとは。理不尽だ。

とはいえ文句言ってても仕方ないので、英語を覚えるいい機会だと思って頑張るしかないな。
アイルランドの人やロシアの人とは英語でコミュニケーションをなんとか取り続けて、少し仲が良くなった気がする。
この調子でアメリカ人のリーダーともうまく付き合っていきたい。

----------------------
CISSPに合格した。2020年はOSCP取りたい。
CISSPとOSCPがあればセキュリティ全般の高度な知識とペネトレーションテストの実践的な高度な技術が証明できる。
勉強にはVulnHubのKioptrixが良いと聞いたのでとりあえず挑戦中。
Lv2までクリアしていて、次はLv3やろうかというところだ。

----------------------
独立したいが妻から反対されており、少しまいっている。
まだ独身だったら気楽でよかったんだけどなー。

2019年3月3日日曜日

C# Windowsプログラミングおぼえがき No.3 - 画像をまとめてPDF化 -

元同僚から以前もらっていた文書資料がなぜかPNGファイル。しかも数百個。
通勤中にスマホで読みたいがこのままだと不便なので、PDF化することに。

すぐに使えるWebサービスを探してみたけど、ファイル数の上限が20個までだとか、そもそも一時的にとはいえ第三者に私的なファイルを渡したくないとか、そういう理由でどれも使わず。

なので自分でそういうプログラムを作った。自宅のPCがWindowsなので楽にC#で。
(Githubで公開)

特定のディレクトリに存在する画像ファイルをすべて読み取ってひとつのPDFに入れ込む。
> Img2Pdf.exe "C:\img"
とか
> Img2Pdf.exe "C:\img" jpg
というように実行するだけ。

第1引数に対象ディレクトリパスを、
第2引数に対象にしたい拡張子(png or jpg)を指定する。
第2引数を指定しなければ.pngと.jpgと.bmpが対象になる。
実行すると、実行ファイルと同じパスにPDFというディレクトリが生成され、その直下にPDFが生成される。
PDFのファイル名は第1引数で指定したディレクトリの名称になる。上記の例だとimg.pdf。

PDFのページ順はファイル名の自然順になり、
PDFのページサイズは最初のページに依存する(この辺りはあまり作り込んでない)。

作っていて引っかかったのが以下の2点。
1.ページサイズを指定せず処理した場合、解像度の高い画像を処理するとページが見切れてしまう。
2.拡張子を一切制限せず処理した場合、Thumb.dbなどの画像ではないファイルを処理した際に例外が発生する。

ここ1年ほどプログラミングの機会がほとんどなくなっていたので、短時間とはいえやっていて楽しかった。

2019年1月14日月曜日

201901近況

『新人SEの開発memo』と銘打ってこのブログを開設したのは2013年01月05日らしい。
もう6年も前で、当時は横浜のSES企業に勤めはじめる直前だった。

----------------------------------
あれから2度転職し、現在は某メガベンチャーのサイバーセキュリティグループに所属しており、Webセキュリティを専門に業務にあたっている。

Webセキュリティに興味を持ったのは今の会社に入ってからだが、事業会社内のセキュリティ組織という立場上、ターゲットは自社ないし自社プロダクトだけに限定される。
特に関心があり主業務でもあるとある分野では、この環境だとまったく場数が踏めないということに気づいた。

そういうわけで3度目の転職活動を2018年12月からやっていて、サイバーセキュリティ関係で現在3社受けて2社内定。
セキュリティ関係の技術者は巷ではまだまだ不足しているらしく、もともと面接ではなぜか受けが良いこともあり転職活動での苦労は少なかった。
残りの1社の結果は来週通知されるそうだが、エージェントさんが担当者から聞いた感じだと「非常にポジティブ」だそうなので問題ないだろう。
その会社は世界中に拠点を持つ老舗コンサルファームで、今いるチームメンバの質が非常に高いらしく、お給料も他より高そうなので、もし内定していればおそらくそれを受けることになる。
副業として起業を考えていたが、転職先ではどこも競業にあたる内容なので、数年先送りにする。
----------------------------------

あとは何かあるだろうか。

2018年夏にひとつCVEを取った。これは大きいな。
CISSPのバウチャーチケットが今年の7月までなので勉強しないといけないが、気乗りしない。
このブログを見てくださった方から2018年末に直接お仕事をいただいて、久し振りにアプリケーション開発。
某SIEMを開発・販売している会社が主催するセキュリティアナリスト向けのCTFで準優勝した。

この1年は、スキルアップを目指していたこともあっていくつか実績ができたのが良かった。

2018年1月5日金曜日

情報処理安全確保支援士について

2017年4月から試験が実施されている情報処理安全確保支援士。

自分は2012年だか2013年だかの情報セキュリティスペシャリスト試験に合格しているので、
今年の夏だか秋だかまでは無試験で登録できるらしいが…

登録によるメリット
・情報処理安全確保支援士を名乗れる。
※情報処理安全確保支援士は業務独占資格ではない

登録によるデメリット
・いくつかの行為に罰則(懲役/罰金)がつく。秘密保持義務違反に関しては資格失効後も罰則の対象になる。
 法律で読む情報処理安全確保支援士 - Qiita
・資格維持に3年で15万円、登録に2万円くらいかかる。

ただの名称独占資格だし維持に大金かかるし
情報処理安全確保支援士の制度ができた頃から「デメリットしかないじゃねーか」と言われてるけど
この辺りは今も変わってないみたい。

せめて資格自体の知名度や社会的ステータスが高ければ、名称独占でも登録するメリットもあるんだろうけど
この調子だと普及するまでにも相当な時間がかかるんじゃなかろうか。

維持費も高すぎるんだよなー
3年で15万円とか個人で払う気しないもんね。会社が払ってくれないと。
ひょっとして、制度で求める人物像と登録者の層が乖離しすぎるのを防ぐためにこうしているのだろうか。
つまり「政府機関や企業等における情報セキュリティ確保支援」が支援士の仕事であり、
そんなのペーパー試験に受かっただけの学生にできるわけないから維持費を高く設定して
費用を会社負担してもらえる社会人だけが登録するように誘導しよう…という腹なのかもしれない。

でもそんなの「受験資格は業務経験X年以上、職務経歴書提出必須、抜き打ち調査あり」
っていうCISSP形式みたいにしてしまえば話は早いわけで
IPAが何を考えてるのかいまいちよくわかんない。

おそらく今年中に登録のメリットが増したりデメリットが減ったりすることはないだろうし
また試験を受けるのも面倒だし、自分が支援士に登録することはないだろうな。

2018年1月4日木曜日

Mini-FilterDriverのHLK対策 -OpLock-

Microsoftがドライバのサンプルを公開していますが、
その内のひとつであるscannerに対してHLKテストなんかでIFS TestやらOpLocks Testを実施すると、
おそらく失敗します。だってOpLock対策が不十分だから。

IRP_MJ_CREATEに関してMicrosoftが公開しているドキュメントなどにあるように、
フラグ判定を2か所に追加しなければなりません。

1.Pre-CreateでのFILE_COMPLETE_IF_OPLOCKED判定
if (FlagOn(Data->Iopb->Parameters.Create.Options, FILE_COMPLETE_IF_OPLOCKED))
return FLT_PREOP_SUCCESS_NO_CALLBACK;

2.Post-CreateでのSTATUS_OPLOCK_BREAK_IN_PROGRESS判定
if (FlagOn(Data->Iopb->Parameters.Create.Options, FILE_COMPLETE_IF_OPLOCKED)
&& Data->IoStatus.Status == STATUS_OPLOCK_BREAK_IN_PROGRESS)
return FLT_POSTOP_FINISHED_PROCESSING;

ただ、実はこれだけではIFS TestはPassできてもOpLocks TestはPassできません。
検証10-8でPost-Create時にFltReadFile()が実行されるとNTFSからの応答が途絶え、
FltReadFile()が完了せずハングアップしてしまうのです・・・。
(試験も手動で中断させるまで止まったままになるし結果は当然Failed)

Microsoft製のプログラムなのにMicrosoftの試験に落ちるってどういうことなの
ハードウェアの問題なのかな?あまり深く調べてないけどもう力尽きました。

以上、職場のWindowsServer2016でなんとなくHLKテストを実施してみた時の話でした。

2016年11月3日木曜日

占いの曲

占いは精神療法と似ているのかもしれない。

お金を払ってまで占い師のもとを訪ねるのは何かしら不安や迷いのある人で、
自分は今どんな状態にあるのか?自分がどうすればいいのか?
それを誰かに教えてもらいたいと思っているはずだ。

占い師は、たとえペテンであっても何かしら教えてくれる。
訪れた人は少しだけ、悩みが薄れたように感じる。

-------------------------

Mr.Childrenの曲に『過去と未来と交信する男』という歌がある。

とある占い師が客の過去と未来を見通し、
今どうあるべきか?を占うという内容の歌である。

曲名からして電波でサイコな印象を受けるし、
初めて聴いた時には「またダーツでも投げたのかな?」と思ったものだ。

しかし、よくよく聴いてみると、この曲は消極的な応援歌なのだとわかる。

ものすごく大まかに書くと、
「今は悩んでいてもこれから良いことあるさ」
という占い師然とした内容なのだ。

つまり、この曲を聴けば、
占いに行かずとも占いに行った気分と効果を味わえるというわけだ。

-------------------------

社会人として日々苦しむエンジニアのあなた。

上司や客や営業部から無理難題を強いられ、
「最近ちょっとお給料あがってる!」→「あぁ増えてるのは残業代か・・・」
と将来を悲観しつつあるあなた。

疲れた時には、この曲を聴いてみてはいかがだろうか。




ちなみにYouTubeのMr.Children公式チャンネルではこの曲の動画は公開されていない。
歌詞 - 『過去と未来と交信する男』

iTunesとかで単体でも買えるかもしれないがとりあえずアルバムを買うのをお勧めする。
Wikipedia - [(an imitation) blood orange]

2016年10月28日金曜日

SMTPでレスポンス分割...?

うちの製品に、メールで情報を送信する機能がある。
つまりSMTP通信を行う機能だ。

その機能について、某大企業の担当者から問い合わせがあった。
「メールが送信できません。」

うちのユーザサポート部署のFさんが詳しくヒアリングしてくれて、
開発部にいる僕に相談しにきた。

話を聞くと、どうやらお客さんの環境はかなり特殊なようだ。
それというのも、EHLOのレスポンスをUTMが分割しているというのだ。
送ってもらったパケットキャプチャを確認してみた。

普通ならレスポンスは1度にまとめて送られてくる。
しかしそのUTMは、SMTPサーバから受け取った複数行リプライを数行ずつ
計2つのパケットに分割して送ってきていたのだ。
SMTPのレスポンスを分割するなんて、僕は聞いたことがなかった。

SMTPのレスポンスは分割され得るものなのか?
インターネットで調べてもそんな例は見当たらない。
ネットワーク系にかなり詳しい同僚も、そんなの見たことないよと言う。
(ちなみにこの同僚、某世界的大手企業から『アジアNo.1セールスエンジニア』と認定されており、同業他社からスカウトされまくる凄い人である。)
これはどうしたものだろう。

~

そのUTM、実は問い合わせてきたお客さんの会社の製品である。
なので訊いてみた。分割の根拠と理由。
するとこんな回答があった。

「RFCに分割手法が書いてある。」
「ウィルスチェックのためにリプライを解析しており、タイムアウトを防ぐべく分割して送っている。」

~

SMTPについて記述されたRFC5321なら僕は読んだことがある。
しかしレスポンス分割に関係しそうなことなんて書かれてないはずだ。
念のために改めて読んでみたが、やはりそんなことは書かれていない。
お客さんが言っているのは別のRFCなのだろうか。
だとしたらSMTP以外の規約が絡んでくるということであり、すごく面倒だな。

Fさん経由で、根拠としているRFCの番号を訊いてみた。
結果は・・・

Fさん「RFC5321だそうです。4.2章のこの部分。」

5321かよ。
そして示された部分はEHLOの複数行リプライの文法に関する記述。
要約するとこんな内容である。
「最終行以外は2XX-xxxxxxxx、最終行はハイフンをスペースに変えて2XX xxxxxxxxとせよ」
「最終行にスペースが使われてなくても対応できるようにクライアントは準備しておけ」

はい。
これは1度のリプライが複数行に及ぶ場合の文法を定義してるわけで、
どう読んでもパケット分割に対応すべしと受け取ることはできないよね。
そもそもEHLOでパケット分割を許容するならDATAコマンド風な仕様になるはずだよね。
つまり五月雨送信の終了を明示的に表す情報が必ず送られてくるべきっていう仕様。

と思ったままをFさん経由で回答すると、
お客さんは案外あっさりと納得してくれた。
なんだそりゃ。

ちなみに、分割の理由についても思うところはある。
分割されたパケットの送信間隔は1秒にも満たない。
ならば分割などという致命的なRFC違反なんかしなくても、
レスポンスはひとまずそのまま送っておいて、もし問題ありと判定したなら
以降の通信を拒否すればいいのだ。ただそれだけ。

でもこの部分、Fさんはお客さんに伝えてない。
まぁ言えないよな。言う必要ないし。

~

うちのその製品では、EHLOのレスポンス内容に関わらず
ユーザが指定した設定に従ってSMTPコマンドを実行する。
これもRFCに則った動作とはいえないが、色々と事情があったのだ。
その分、通常はこの動作がネックにならないように作り込んでおり、
このお客さん以外のすべてのユーザ環境で正常稼働している。

今回お客さんはStartTLSとSMTP認証を使っていた。
なので具体的には、
「EHLOの分割レスポンス2つ目をUTMが送信する前にSTARTTLSコマンドが実行されてるぞ!だからメール送信できないぞ!」
という問い合わせだったわけだ。

これについては上述の通り、お客さんは「UTMが悪いんじゃん!」と納得してくれた。
しかし・・・

「EHLOの分割レスポンス2つ目をUTMが送信する前にAUTHコマンドが実行されてるぞ!だからメール送信できないぞ!あとAUTHコマンドってなんだ!」
という問い合わせが翌日あった。もちろん同じお客さんである。

なぜだか知らないがこのお客さん、どうやら「じゃあStartTLS使わなければいいんじゃん!」と思ったらしい。

だからそもそも分割してんのが駄目なんだって!!!

それと少しは自分で調べてみてよ・・・。
「SMTP Auth」で調べたら、AUTHコマンドがSMTP認証のコマンドだってすぐわかるよ。。
コマンドレベルの細かい問い合わせしてくる割に知識がないんだよな。
ひょっとして新人なのかな・・・先輩にいわれて問い合わせてるだけの


そんなお話

2016年2月24日水曜日

Hackme攻略 - Lv別ヒント -

「糸口すらつかめねえ・・・でも答えは自力で導き出したい!」というハイエンドなあなたに朗報
HackmeのLv1からLv4までのヒントだけを書いておく。Lv5は知りません。

ヒントといってもいくつかのキーワードだけ。
しかし、もし基礎知識が充分であれば、それだけでも突破口は見えてくるはず。


■Lv1
・ソースコード

■Lv2
・データベース
・サニタイジング

■Lv3
・URL
・passwdファイル

■Lv4
・スクリプト
・サニタイジング
・Cookie
・セッション


健闘を祈る!