Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

1.087 visualizaciones

Publicado el

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

Publicado en: Ingeniería
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

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

  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です。虚しい

×