急にマルウェア検知が起こった話

何もしていなかったのですが、急に隣の画面に放置していたVM環境のwindowsPCで急にマルウェア検知のアラートが表示されました。

ログを調べてみると、OnDemandスキャンで引っかかっていて、
CompatTelRunner.exeがファイルを走査してEicarがファイルが引っかかったようで、、

CompatTelRunnerを調べてみると、カスタマー エクスペリエンス向上プログラムとの記載がありMicrosoftから提供されているようですが、、リソースを食っているので、軽くするためにも止めることにしました。

タスクスケジューラを開き、タスクスケジューラライブラリ、MicrosoftWindowsのApplication Experienceを開く。
こいつがCompatTelRunner.exeを起動しているので、全て無効化してやりました。

マルウェア検知から、よくわからないタスクが見つかり、サービス止めてWindows軽量化できました。

めでたしめでたし。

ctfのお勉強 ksnctf #24 Rights out

ksnctfを解いてみた

ksnctf

#24 Rights out

IDAで開こうとするとエラーがでる。
エラー内容でググってみるとC#Decompilerでいけるらしい。
ILSpyをダウンロードしてきて、ソースコードを眺めました。
Check()という関数があり、Congraturationsの文字列でここがフラグかなと判断。


f:id:skymay:20180125165328p:plain


C#環境がなかったので、Pythonで書き換えて実行しました。
ネタバレ防止に一部マスクしてます。

array =[1,7,16,11,14,19,20,18]
array2 = [85,111,117,43,104,127,117,117,33,110,99,43,72,95,85,85,***********]
text = ""
for j in range(0,len(array2)):
	text += chr(array2[j] ^ array[j % len(array)])
print(text)


ブログに書いたか覚えてないが、実はちょっと前に解いたRiddleより簡単。
ksnctfもコンプリートまであと少し

海外でスマホ利用する

海外でスマホを利用する

海外で道を調べたり、FacebookやLINEやら使いたい。
ちょっと調べたことをまとめておきたいと思います。

いくつかの選択肢

海外でインターネット接続するにあたってSIMカードWifiレンタル、キャリアのパケット定額の選択肢があります。
それぞれメリットデメリットがあるので、状況に応じて使い分けると良いです。

SIMカードを買う

まだ使ったことがないので、今回の記事では言及しないことにします。

Wifiルーターを借りる

メリット

  • 安定して利用することができます。

デメリット

  • 荷物が増えます。
  • レンタル期間で課金(移動日も支払う)


空港でwifiを借りて、それ経由でインターネットにアクセスします。
500MB/日 1500円くらいです。保険等のオプション付けるともう少し高くなります。
また移動日も課金されるため、遠くに行く際はキャリアのサービス等に比べると少し割高かもしれません。
またエリアによって、wifiを変える必要があるため、複数エリアに行く場合は荷物が増えます。
帰国時の返却は忘れないように注意が必要です。

キャリアのサービスを使う

メリット

  • 簡単に利用できます。

デメリット

  • キャリアによってサービスに差があります。
au

料金は980円/dayです。
※ 世界データ定額でご利用の通信量は、「auピタットプラン」「auフラットプラン20/30」「データ定額1~30」「データ定額1(ケータイ)~5(ケータイ)」や「LTEフラット」などの国内のデータ定額サービス/料金プランの月間容量やデータチャージのデータ容量購入分から消費します。
これを超えると128kbpsになります。世界150ヶ国以上で使えて、980円/dayなので、色々な所にいく場合は他キャリアに比べてかなりお買い得です。

SoftBank

アメリカの場合はアメリカ放題キャンペーン中(2019/1/21現在)でそのまま無料で使えます。(キャンペーン終了後は980円/月)
その他エリアは2980円/dayとなります。アメリカへ行く場合は一番お手軽かもしれません。

docomo

料金は980円/dayです。ただし一日30MBの制限がありそれを超えると16kbpsとなります。
現在(2019/1/22)は、キャンペーン中で2018/3/14までは30MBを超えても速度制限がかかりません。

ただ、キャンペーンが終了すると正直な所使い物になりません。
30MBだとすこしの調べ物やgoogleマップを開くと一瞬で消費されます。


あといま見たら新規受付終了するようです。

「海外1dayパケ」新規受付終了のお知らせ
2018年3月14日(水)をもって、新規受付を終了いたします。

今後は海外パケホーダイのみになるのでしょうか。
こちらのサービスもどれだけ使っても2980円/dayとうたっていますが、他社と比べて高く、これを使うくらいなら他キャリアかSIMかWifiレンタルをした方が良いでしょう。

まとめ

キャリアサービスで言えば、現在のところauがもっとも安く簡単に使えます。
アメリカしか行かないのであれば、Softbankが良いでしょう。
docomoユーザーの方は、キャンペーン終了後はwifiレンタルかsimカードをおすすめします。

Docker テスト用メールサーバー

はじめに

ちょっと必要になってローカル開発やテスト用途にメールサーバーを立ててみました。
検索してみると「smtp4dev」とか「Radish」とか「BlackJumbo」とか出てきますが、
最近話題のコンテナdocker使ってみました。初めて←

環境

macOS 10.13.1
Docker version 17.09.0
Mailhog
https://hub.docker.com/r/mailhog/mailhog/

Dockerのインストール

一応公式ページでスペックを確認しておきます。
https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac
ハードは新しいモデルとmacOSはELCapitan10.11より新しい、
4GM以上のメモリ、VirtualBox4.3.30以前はやめとけと。

公式のホームページからdocker.dmgをダウンロードします。

f:id:skymay:20171126144626p:plain

クリックしてドラッグ&ドロップでinstallします。

Mailhogのインストール

続いてMailhogをcommandからインストールします。
公式サイトはこちら
https://hub.docker.com/r/mailhog/mailhog/

 $>docker pull mailhog/mailhog

設定と起動

docker-compose.ymlの設定をします。

$> mkdir docker
$> cd docker
$docker > vi docker-compose.yml

docker-compose.ymlの中身はこちら

mailhog:
  image: mailhog/mailhog
  ports:
    - "8025:8025"
    - "1025:1025"

8025はHTTPポート、1025はsmtpポートです。環境に合わせて変更してください。

mailhogを起動します

$> docker-compose up

起動後localhostへのアクセスを確認します。
http://localhost:8025/

メールテスト

動作テストします。pythonスクリプト書いてテストしました。
telnetでも良いと思います。

import smtplib
from email.mime.text import MIMEText
def test_mail(from_addr, to_addr, subject, msg):
    m = MIMEText(msg)
    m['Subject'] = subject
    m['From'] = from_addr
    m['To'] = to_addr

    s = smtplib.SMTP(host="localhost", port=1025)
    s.sendmail(from_addr, to_addr, m.as_string())
    s.close()
    return

test_mail("from@addr.example.com","to@addr.example.com","test","test")

f:id:skymay:20171126150514p:plain

docs.docker.com

ctfのお勉強 ksnctf #16 Math1

ksnctfを解いてみた

ksnctf

#16 Math1

RSA暗号pythonでコード書けば終了する。

def gcd(a, b):
    if b == 0:
        u = 1
        v = 0
    else:
        q = a / b
        r = a % b
        (u0, v0) = gcd(b, r)
        u = v0
        v = u0 - q * v0
    return (u, v)

if __name__ == '__main__':
    p = 34111525225922333955113751419357677129436029651245533697825114748126342624744832960936498161825269430327019858323450578875242014583535842110912370431931233957939950911741013017595\
9774719497672354264908502842866615923577798252122650559317057999169138176557434344974229934989313946188327413362474268157101643425991509906081436373310682202445255417948556516431350128460\
3943935510102799494512069853017732982921320876105739223687536645819709850725285124413245599646862895756017886872431000031701191299463232837176148666935806557726919806579298153737844832492\
3622959249447066754504943097391628716371245206444816309511381323;

    q = 44481453884385518268018625442920628989497457642625668259648790876723318635861137128631112417617317160816537010595885992856520476731882382742220627466006460645416066646852266992087\
3868554911527952371539013195215064298734343369696665369953998661257810577680755335601203991845669564331298549954648932654037240349606899383514507099506997405084592067850936932775417852856\
9973387353054191848384212269127632228681042229701578265864512942104316074904084621689267103115646536465268103682846161927242731875809853892772739245950176120384236301712143265753477089818\
1975532066012149902177196510416802134121754859407938165610800223;
    e = 65537;
    l = (p-1)*(q-1);
    n = 15173302362629175953146108888893221156510870808267119488970663408832082055715923923626508585710762479398054362265448332245261375828347704026810053439300594636845289572717781991625\
7505330623809982329511769703196837069037225091693580073869814210327596922326418437464824627756430690088600529973126581225527472317592518552234483106657716686778683595509205934624488558722\
8196357297758371381557924676260190209536670230008561217008649261974735505203813478978893582292682827884118215872470401293272325715864815977064075988643101088355047954735427424641386870772\
8454407826329334851651101724375118227369075507778177222487536711073398234104189384043827320793813292884000129293113473904230612546587801852455626681310098322934749202088347954600611151013\
6409125217659414409667589995257038079297803721774731159589930145119234202779953326432594887655611047485076153817974831818780531245189589875133797545794954949766654217507789498769708552188\
2531938339334715190663665300179658557458036053188152532948734992896239950564081581184284728802682982779186068791931259198917308153082917381616147108543673346682338045309449569430550618884\
202465809290850964525390539782080230737593560891353558335337408957948041667929154230334506735825418239563481028126435029

x=2255495926284926161526322654821253158689111256599710859297122963662143556080492241793397576379825415427450108220222264091261236278049530640720556670121726815515007807634831729143898\
1305744466931472640413597856544628230901972999497681592585091648725769970747820613247471096375259039933292067260744079311638705107119191983531684582783828795454155877735586471478246429927\
8036910958484272003656702623646042688124964364376687297742060363382322519436200343894901785951095760714894439233966409337996138592489997024933882003852590408577812535049335652212448474376\
4570150770475298183158775496148595864755040700512010547049546540934820564930929307007878905793460659168344347399807914022161755550758960666165191501648319906267275918761158212199412683096\
7824087229802961174657537632273331165739450285985221359538960723943158512094326877467978531613347817122571972991787700962461128670201093695170516087099718412377548859213058660607027717339\
2647225589257616518666852404878425355285270687131724258281902727717116041282358028398978152480549468694659695121115046850718180640407034795656480263573773381753855724693739080045739160297\
875306923958599742379878734638341856117533253251168244471273520476474579680250862738227337561115160603373096699944163

    d = gcd(e,l)
    if d < 0:
        d += l
    print("d={0}".format(d));
    #m = cd(mod n)                                                                                                                                                                              
    m=pow(x,d,n)
    print ("%0512x"%m).decode("hex")

ctfのお勉強 ksnctf #22 Square Cipher

ksnctfを解いてみた

ksnctf

#22 Square Cipher

文字列が並んでいる。
大文字と小文字があるので、0/1で変換して色を塗って見るとQRコードに。

無理やりエクセルでやりました。
f:id:skymay:20171108170809p:plain

コード書いて読み込ませたほうが早いのかな。。

ctfのお勉強 ksnctf #19 ZIP de kure

ksnctfを解いてみた

ksnctf

#19 ZIP de kure

flag.zipがダウンロードできるのでとりあえず解答してみる。

unzip flag.zip
Archive:  flag.zip
Hint:
- It is known that the encryption system of ZIP is weak against known-plaintext attacks.
- We employ ZIP format not for compression but for encryption.
[flag.zip] flag.html password: 
   skipping: flag.html               incorrect password
   skipping: Standard-lock-key.jpg   incorrect password

やはりパスワードがかかっている。
ファイルが二つあってHIntにknown-plaintext attacksに弱いとある。

Standard-lock-key.jpgをグーグルさんで検索してみるといくつか画像が出てくる。
画像ダウンロードしてpkcrackかければ無事にフラグがゲットできます。

pkcrack -c Standard-lock-key.jpg -p ./Standard-lock-key.jpg -C flag.zip -d ans.zip