์†Œ์Šค ์ฝ”๋“œ ๊ฒ€ํ†  / SAST ๋„๊ตฌ

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ๋„๊ตฌ ๋ชฉ๋ก

๋‹ค๊ตญ์–ด ๋„๊ตฌ

Naxus - AI-Gents

PR ๊ฒ€ํ† ๋ฅผ ์œ„ํ•œ ๋ฌด๋ฃŒ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Semgrep

์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ง€์› ์–ธ์–ด

์นดํ…Œ๊ณ ๋ฆฌ์–ธ์–ด
GAC# ยท Go ยท Java ยท JavaScript ยท JSX ยท JSON ยท PHP ยท Python ยท Ruby ยท Scala ยท Terraform ยท TypeScript ยท TSX
BetaKotlin ยท Rust
ExperimentalBash ยท C ยท C++ ยท Clojure ยท Dart ยท Dockerfile ยท Elixir ยท HTML ยท Julia ยท Jsonnet ยท Lisp ยท

๋น ๋ฅธ ์‹œ์ž‘

# Install https://github.com/returntocorp/semgrep#option-1-getting-started-from-the-cli
brew install semgrep

# Go to your repo code and scan
cd repo
semgrep scan --config auto

semgrep VSCode Extension๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VSCode ๋‚ด์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SonarQube

์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋ฌด๋ฃŒ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

# Run the paltform in docker
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
# Install cli tool
brew install sonar-scanner

# Go to localhost:9000 and login with admin:admin or admin:sonar
# Generate a local project and then a TOKEN for it

# Using the token and from the folder with the repo, scan it
cd path/to/repo
sonar-scanner \
-Dsonar.projectKey=<project-name> \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.token=<sonar_project_token>

CodeQL

์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋ฌด๋ฃŒ ๋ฒ„์ „์ด ์žˆ์ง€๋งŒ ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ฅด๋ฉด ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ๋ฌด๋ฃŒ CodeQL ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

# Download your release from https://github.com/github/codeql-action/releases
## Example
wget https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.14.3/codeql-bundle-osx64.tar.gz

# Move it to the destination folder
mkdir ~/codeql
mv codeql-bundle* ~/codeql

# Decompress it
cd ~/codeql
tar -xzvf codeql-bundle-*.tar.gz
rm codeql-bundle-*.tar.gz

# Add to path
echo 'export PATH="$PATH:/Users/username/codeql/codeql"' >> ~/.zshrc

# Check it's correctly installed
## Open a new terminal
codeql resolve qlpacks #Get paths to QL packs

๋น ๋ฅธ ์‹œ์ž‘ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค€๋น„

Tip

๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ (์ฝ”๋“œ ํŠธ๋ฆฌ ์ƒ์„ฑ)์œผ๋กœ, ์ดํ›„ ์ฟผ๋ฆฌ๊ฐ€ ๊ทธ ์œ„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • codeql์ด ๋ฆฌํฌ์˜ ์–ธ์–ด๋ฅผ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
codeql database create <database> --language <language>

# Example
codeql database create /path/repo/codeql_db --source-root /path/repo
## DB will be created in /path/repo/codeql_db

Caution

์ด ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์–ธ์–ด๊ฐ€ ์ง€์ •๋˜์—ˆ๋‹ค๊ณ  (๋˜๋Š” ์ž๋™์œผ๋กœ ๊ฐ์ง€๋˜์—ˆ๋‹ค๊ณ ) ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ต์…˜์„ ํ™•์ธํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”!

  • ๋ ˆํฌ์™€ ์–ธ์–ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์–ธ์–ด ๋ชฉ๋ก)
codeql database create <database> --language <language> --source-root </path/to/repo>

# Example
codeql database create /path/repo/codeql_db --language javascript --source-root /path/repo
## DB will be created in /path/repo/codeql_db
  • ๋งŒ์•ฝ ๋‹น์‹ ์˜ ๋ ˆํฌ๊ฐ€ 1๊ฐœ ์ด์ƒ์˜ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๊ฐ ์–ธ์–ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์–ธ์–ด๋ณ„ 1๊ฐœ์˜ DB๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --source-root /path/to/repo --db-cluster --language "javascript,python"

# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-cluster --language "javascript,python"
## DBs will be created in /path/repo/codeql_db/*
  • codeql์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์–ธ์–ด๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์–ธ์–ด๋ณ„๋กœ DB๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GITHUB_TOKEN์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --db-cluster --source-root </path/to/repo>

# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
## DBs will be created in /path/repo/codeql_db/*

Quick Start - ์ฝ”๋“œ ๋ถ„์„

Tip

์ด์ œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด, ์–ธ์–ด๋ณ„ DB๊ฐ€ ์ง€์ •ํ•œ ๊ฒฝ๋กœ์— ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

# Default analysis
codeql database analyze <database> --format=<format> --output=</out/file/path>
# Example
codeql database analyze /tmp/codeql_db/javascript --format=sarif-latest --output=/tmp/graphql_results.sarif

# Specify QL pack to use in the analysis
codeql database analyze <database> \
<qls pack> --sarif-category=<language> \
--sarif-add-baseline-file-info \ --format=<format> \
--output=/out/file/path>
# Example
codeql database analyze /tmp/codeql_db \
javascript-security-extended --sarif-category=javascript \
--sarif-add-baseline-file-info --format=sarif-latest \
--output=/tmp/sec-extended.sarif

๋น ๋ฅธ ์‹œ์ž‘ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜

export GITHUB_TOKEN=ghp_32849y23hij4...
export REPO_PATH=/path/to/repo
export OUTPUT_DIR_PATH="$REPO_PATH/codeql_results"
mkdir -p "$OUTPUT_DIR_PATH"
export FINAL_MSG="Results available in: "

echo "Creating DB"
codeql database create "$REPO_PATH/codeql_db" --db-cluster --source-root "$REPO_PATH"
for db in `ls "$REPO_PATH/codeql_db"`; do
echo "Analyzing $db"
codeql database analyze "$REPO_PATH/codeql_db/$db" --format=sarif-latest --output="${OUTPUT_DIR_PATH}/$db).sarif"
FINAL_MSG="$FINAL_MSG ${OUTPUT_DIR_PATH}/$db.sarif ,"
echo ""
done

echo $FINAL_MSG

๊ฒฐ๊ณผ๋ฅผ https://microsoft.github.io/sarif-web-component/์—์„œ ์‹œ๊ฐํ™”ํ•˜๊ฑฐ๋‚˜ VSCode ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ SARIF viewer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ VSCode ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ VSCode ๋‚ด์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ดํ›„์—๋Š” ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  Right Click -> CodeQL: Run Queries in Selected Files๋ฅผ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Snyk

์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋ฌด๋ฃŒ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

# Install
sudo npm install -g snyk

# Authenticate (you can use a free account)
snyk auth

# Test for open source vulns & license issues
snyk test [--all-projects]

# Test for code vulnerabilities
## This will upload your code and you need to enable this option in: Settings > Snyk Code
snyk test code

# Test for vulns in images
snyk container test [image]

# Test for IaC vulns
snyk iac test

snyk VSCode Extension๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VSCode ๋‚ด์—์„œ ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Insider

์˜คํ”ˆ ์†Œ์Šค์ด์ง€๋งŒ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ์–ธ์–ด

Java (Maven ๋ฐ Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, ๋ฐ Javascript (Node.js).

๋น ๋ฅธ ์‹œ์ž‘

# Check the correct release for your environment
$ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz
$ tar -xf insider_2.1.0_linux_x86_64.tar.gz
$ chmod +x insider
$ ./insider --tech javascript  --target <projectfolder>

DeepSource

๊ณต๊ฐœ ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค.

NodeJS

  • yarn
# Install
brew install yarn
# Run
cd /path/to/repo
yarn install
yarn audit # In lower versions
yarn npm audit # In 2+ versions

npm audit
  • pnpm
# Install
npm install -g pnpm
# Run
cd /path/to/repo
pnpm install
pnpm audit
  • nodejsscan: Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ •์  ๋ณด์•ˆ ์ฝ”๋“œ ์Šค์บ๋„ˆ(SAST)๋กœ libsast์™€ semgrep๋กœ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค.
# Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
# Got to localhost:9090
# Upload a zip file with the code
  • RetireJS: Retire.js์˜ ๋ชฉํ‘œ๋Š” ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ ์ด ์žˆ๋Š” JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์˜ ์‚ฌ์šฉ์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
# Install
npm install -g retire
# Run
cd /path/to/repo
retire --colors

Electron

  • electronegativity: Electron ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ ๋ฐ ๋ณด์•ˆ ์•ˆํ‹ฐ ํŒจํ„ด์„ ์‹๋ณ„ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Python

  • Bandit: Bandit๋Š” Python ์ฝ”๋“œ์—์„œ ์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Bandit๋Š” ๊ฐ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ๋กœ๋ถ€ํ„ฐ AST๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉฐ, AST ๋…ธ๋“œ์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Bandit๊ฐ€ ๋ชจ๋“  ํŒŒ์ผ ์Šค์บ”์„ ์™„๋ฃŒํ•˜๋ฉด ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
# Install
pip3 install bandit

# Run
bandit -r <path to folder>
  • safety: Safety๋Š” ์•Œ๋ ค์ง„ ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋Œ€ํ•ด Python ์ข…์†์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. Safety๋Š” ๊ฐœ๋ฐœ์ž ๋จธ์‹ , CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
# Install
pip install safety
# Run
safety check
  • Pyt: ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Œ.

.NET

# dnSpy
https://github.com/0xd4d/dnSpy

# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs

RUST

# Install
cargo install cargo-audit

# Run
cargo audit

#Update the Advisory Database
cargo audit fetch

์ž๋ฐ”

# JD-Gui
https://github.com/java-decompiler/jd-gui

# Java compilation step-by-step
javac -source 1.8 -target 1.8 test.java
mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
์ž‘์—…๋ช…๋ น์–ด
Jar ์‹คํ–‰java -jar [jar]
Jar ์••์ถ• ํ•ด์ œunzip -d [output directory] [jar]
Jar ์ƒ์„ฑjar -cmf META-INF/MANIFEST.MF [output jar] *
Base64 SHA256sha256sum [file] | cut -dโ€™ โ€™ -f1 | xxd -r -p | base64
์„œ๋ช… ์ œ๊ฑฐrm META-INF/.SF META-INF/.RSA META-INF/*.DSA
Jar์—์„œ ์‚ญ์ œzip -d [jar] [file to remove]
ํด๋ž˜์Šค ๋””์ปดํŒŒ์ผprocyon -o . [path to class]
Jar ๋””์ปดํŒŒ์ผprocyon -jar [jar] -o [output directory]
ํด๋ž˜์Šค ์ปดํŒŒ์ผjavac [path to .java file]

์ด๋™

https://github.com/securego/gosec

PHP

Psalm ๋ฐ PHPStan.

Wordpress Plugins

https://www.pluginvulnerabilities.com/plugin-security-checker/

Solidity

JavaScript

Discovery

  1. Burp:
  • Spider ๋ฐ ์ฝ˜ํ…์ธ  ๋ฐœ๊ฒฌ
  • Sitemap > ํ•„ํ„ฐ
  • Sitemap > ๋„๋ฉ”์ธ ์šฐํด๋ฆญ > Engagement tools > Find scripts
  1. WaybackURLs:
  • waybackurls <domain> |grep -i "\.js" |sort -u

Static Analysis

Unminimize/Beautify/Prettify

Deobfuscate/Unpack

Note: ์™„์ „ํ•œ ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. .map ํŒŒ์ผ ์ฐพ๊ธฐ ๋ฐ ์‚ฌ์šฉ:
  • .map ํŒŒ์ผ์ด ๋…ธ์ถœ๋˜๋ฉด ์‰ฝ๊ฒŒ ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ foo.js.map์€ foo.js์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ์ฐพ์•„๋ณด์„ธ์š”.
  • JS Miner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ์•„๋ณด์„ธ์š”.
  • ํ™œ์„ฑ ์Šค์บ”์ด ์ˆ˜ํ–‰๋˜๋„๋ก ํ•˜์„ธ์š”.
  • โ€™Tips/Notesโ€™๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.
  • ๋ฐœ๊ฒฌ๋˜๋ฉด Maximize๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜ํ•˜์„ธ์š”.
  1. .map ํŒŒ์ผ ์—†์ด JSnice ์‹œ๋„:
  • ์ฐธ์กฐ: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
  • ํŒ:
  • jsnice.org๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ โ€œNicify JavaScriptโ€ ๋ฒ„ํŠผ ์˜†์˜ ์˜ต์…˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  โ€œInfer typesโ€ ์„ ํƒ์„ ํ•ด์ œํ•˜์—ฌ ์ฝ”๋“œ์— ์ฃผ์„์œผ๋กœ ํ˜ผ๋ž€์„ ์ค„์ด์„ธ์š”.
  • ์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋นˆ ์ค„์„ ๋‚จ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”. ์ด๋Š” ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜ ๊ณผ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์ณ ๋ถ€์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. JSNice์˜ ๋” ํ˜„๋Œ€์ ์ธ ๋Œ€์•ˆ์œผ๋กœ๋Š” ๋‹ค์Œ์„ ์‚ดํŽด๋ณด์„ธ์š”:
  • https://github.com/pionxzh/wakaru
  • Javascript ๋””์ปดํŒŒ์ผ๋Ÿฌ, ์–ธํŒฉ์ปค ๋ฐ ์–ธ๋ฏธ๋‹ˆํŒŒ์ด ํˆดํ‚ท Wakaru๋Š” ํ˜„๋Œ€ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ Javascript ๋””์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ๋ฐ ํŠธ๋žœ์ŠคํŒŒ์ผ๋œ ์†Œ์Šค์—์„œ ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

  • https://github.com/j4k0xb/webcrack
  • obfuscator.io ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜, ์–ธ๋ฏธ๋‹ˆํŒŒ์ด ๋ฐ ๋ฒˆ๋“ค๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธํŒฉ

  • https://github.com/jehna/humanify
  • ChatGPT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Javascript ์ฝ”๋“œ๋ฅผ ์–ธ๋ฏธ๋‹ˆํŒŒ์ด ์ด ๋„๊ตฌ๋Š” ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ(์˜ˆ: ChatGPT ๋ฐ llama2)๊ณผ ๊ธฐํƒ€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Javascript ์ฝ”๋“œ๋ฅผ ์–ธ๋ฏธ๋‹ˆํŒŒ์ดํ•ฉ๋‹ˆ๋‹ค. LLM์€ ๊ตฌ์กฐ์  ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ํžŒํŠธ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด ์ž‘์—…์€ Babel์ด AST ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ 1-1 ๋™๋“ฑ์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html
  • LLM์„ ์‚ฌ์šฉํ•˜์—ฌ JavaScript ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ฏธ๋‹ˆํ”ผ์ผ€์ด์…˜์„ ์—ญ์ „

  1. console.log() ์‚ฌ์šฉ:
  • ๋งˆ์ง€๋ง‰์— ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ฐพ์•„ console.log(<packerReturnVariable>);๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜๋œ js๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋Œ€์‹  ์ถœ๋ ฅ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆ˜์ •๋œ(์—ฌ์ „ํžˆ ์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜๋œ) js๋ฅผ https://jsconsole.com/์— ๋ถ™์—ฌ๋„ฃ์–ด ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜๋œ js๊ฐ€ ์ฝ˜์†”์— ๊ธฐ๋ก๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ๋””์˜ค๋ธŒํ“จ์Šค์ผ€์ด์…˜๋œ ์ถœ๋ ฅ์„ https://prettier.io/playground/์— ๋ถ™์—ฌ๋„ฃ์–ด ๋ถ„์„์„ ์œ„ํ•ด ์•„๋ฆ„๋‹ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • Note: ์—ฌ์ „ํžˆ ํŒจํ‚น๋œ(ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ) js๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ํŒจํ‚น๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์„ธ์š”.

References

Tools

Less Used References

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ