Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

レッツゴー難読化シェル芸

951 views

Published on

2018/07/07に開催されたシェル芸勉強会でLTしたかった資料です

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

レッツゴー難読化シェル芸

  1. 1. レッツゴー難読化シェル芸 たいちょー
  2. 2. みなさん#!bin/bash(こんにちはの意) たいちょーです @xztaityozx_001 ⺟語はC# Golangはじめました 家に帰れませんでした
  3. 3. 今⽇のテーマ
  4. 4. 難読化シェル芸
  5. 5. 難読化シェル芸 #とは kanata さん考案の 読めない シェル芸 内部的な動作の⼿続き内容・構造・データなどを⼈間が理解 しにくい、あるいはそのようになるよう加⼯されたシェル芸 のこと。-- A painter and a black catより
  6. 6. 難読化シェル芸のちょっとした話 少し前に⾃分のブログにて書いた 超・記号オンリー難読化 の ちょっとした話 難読化に必要なツールの1つ mt コマンドのバージョンが 違うという話 あまりにも違うので同じプロジェクトなのかどうかも疑 っている
  7. 7. 他に気になってること
  8. 8. 難読化シェル芸打ち込みにくい︕
  9. 9. 打ち込みにくい 読めないことと引き換えに打ち込みにくくなった難読化シェ ル芸 $ __=$(. 2>&1) $ __=${__##*.} $ ___=$(${__:7:1}${__:18:1} 2>&1) $ ___=${___##*]} $ ____=$(${___:14:1}${__:12:1}${__:2:1}${__:17:1}${__:18:1}${__:1:1} $ ${____:30:1}${____:27:1}${__:18:1}${____:31:1} 2018年 7⽉ 3⽇ ⽕曜⽇ 10:11:47 JST めっちゃつかれる
  10. 10. ⾯倒なことは機械にやらせよう
  11. 11. というわけで出来ました。難読化ツール GitHub : xztaityozx/nandokuka
  12. 12. nandokuka コレまでいろいろ発⾒された難読化⼿法を⾊々試せる素敵ツール Golang製 ガバガバ変換 対応難読化 ASCII難読化 base64難読化 echo使うやつ gzip難読化 記号オンリー難読化
  13. 13. 例 : ASCII難読化 ⽂字列をASCIIコードに変換するベーシックな難読化 date => $'x64x61x74x65' コレまでは xxd に通したりしてASCIIコードを⾒ていたので⾃ 動化 $ nandokuka ascii <(echo date) $'x64x61x74x65' デコードも⽤意したけど echo するだけでいいのでいらない $ echo $'x64x61x74x65'|nandokuka --decode ascii date
  14. 14. 例 : gzip難読化 コマンドを gzip して読めなくする難読化。頭おかしい date => eval $(echo -n 1f8b08007ad13a5b00034b492 c4905007a379eaa04000000 |xxd -ps -r|gunzip) オプション⾊々 $ echo date | nandokuka gzip #ほぼgzipコマンド 1f8b080033d23a5b00034b492c4905007a379eaa04000000 $ echo date | nandokuka gzip -e #実⾏できる感じにする eval $(echo -n 1f8b08003..(略)..000|xxd -ps -r|gunzip) $ echo 1f8b08003..(略)..000|nandokuka -d gzip #ほぼgunzip date
  15. 15. 例 : 記号オンリー難読化 コマンドを記号だけで表すヤバイやつ date => ${@:2$((1+2)):1}${@:2$((2+2*2)):1}${@:$((2*2*2-1)):1}${@:22:1} 何書いてあるのかわからん $ echo date | nandokuka symbol ${@:2$((1+2)):1}${@:2$((2+2*2)):1}${@:$((2*2*2-1)):1}${@:22:1} $ echo date | nandokuka symbol -p #必要なパーツも⼀緒に出せる A=$(. 2>&1);A=${A##*.}; ${A:1$((2*2*2+1)):1}${A:$((2+2)):1}${A:1$((2*2+2*2)):1} -- {z..A}; ${@:2$((1+2)):1}${@:2$((2+2*2)):1}${@:$((2*2*2-1)):1}${@:22:1}
  16. 16. 例 : 記号オンリー難読化 超・記号オンリー難読化もできる $ echo date | nandokuka symbol --super ${____:$((2+2))$((2+2)):1} ${__:$((2+2*2)):1}${__:1$((2*2+2*2)):1}${__:$((2+2)):1} $ echo date | nandokuka symbol --super -p | bash 2018年 7⽉ 3⽇ ⽕曜⽇ 10:40:55 JST
  17. 17. ぷるりくして︕ シェル芸をパースしているわけじゃなくて、ただの置換ツー ルなので、 eval しないとダメな場合がほとんど shfmt というGo製のパーサーみたいなのがある 使い⽅わからん・・・ 追加機能とかほしいのがアレば、PRとかIssueをなにとぞ
  18. 18. 因みに ⽇常⽣活で使った回数は0です。虚しい

×