DApps - λΆ„μ‚° μ• ν”Œλ¦¬μΌ€μ΄μ…˜

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 μ§€μ›ν•˜κΈ°

DAppμ΄λž€ 무엇인가?

DApp은 쀑앙 μ„œλ²„μ— ν˜ΈμŠ€νŒ…λ˜μ§€ μ•Šκ³  ν”Όμ–΄ 투 ν”Όμ–΄ λ„€νŠΈμ›Œν¬μ—μ„œ μ‹€ν–‰λ˜λŠ” λΆ„μ‚° μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. DApp은 일반적으둜 블둝체인 κΈ°μˆ μ„ 기반으둜 κ΅¬μΆ•λ˜μ–΄ λ°μ΄ν„°μ˜ 투λͺ…μ„±, λ³΄μ•ˆ 및 λΆˆλ³€μ„±μ„ ν—ˆμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Web3 DApp μ•„ν‚€ν…μ²˜

이 κ²Œμ‹œλ¬Όμ— λ”°λ₯΄λ©΄ Web3 DApp μ•„ν‚€ν…μ²˜μ—λŠ” 3κ°€μ§€ μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€:

β€œAPI μ—†λŠ”β€ DApps

이 DApp은 블둝체인 μœ„μ— κ΅¬μΆ•λ˜λ©° 쀑앙 집쀑식 APIλ‚˜ λ°±μ—”λ“œμ— μ˜μ‘΄ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 블둝체인이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹€μ œ λ°±μ—”λ“œλΌκ³  생각할 수 μžˆμŠ΅λ‹ˆλ‹€. 이듀은 μ™„μ „νžˆ λΆ„μ‚°ν™”λ˜μ–΄ 있으며 블둝체인을 톡해 직접 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

블둝체인과 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•΄ ν΄λΌμ΄μ–ΈνŠΈλŠ” 일반적으둜 지갑을 μ‚¬μš©ν•©λ‹ˆλ‹€. 지갑은 κ±°λž˜μ— μ„œλͺ…ν•˜κ³  이λ₯Ό 블둝체인에 μ „μ†‘ν•©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” λΈ”λ‘μ²΄μΈμ—μ„œ 데이터λ₯Ό 읽기 μœ„ν•΄ λ…Έλ“œλ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

β€œAPI μ‚¬μš© κ°€λŠ₯” DApps

이 DApp은 블둝체인 μœ„μ— κ΅¬μΆ•λ˜μ§€λ§Œ 일반적으둜 정보λ₯Ό μˆ˜μ§‘ν•˜κΈ° μœ„ν•΄ 쀑앙 집쀑식 API에 μ˜μ‘΄ν•©λ‹ˆλ‹€. 이듀은 λŒ€λΆ€λΆ„ λΆ„μ‚°ν™”λ˜μ–΄ 있으며, 쀑앙 집쀑식 API에 μ˜μ‘΄ν•˜λ”λΌλ„ DApp의 핡심 κΈ°λŠ₯은 μ—¬μ „νžˆ 블둝체인에 μžˆμŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ 블둝체인 κ°„μ˜ 톡신은 일반적으둜 지갑을 톡해 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

이 μœ ν˜•μ˜ DApp의 쒋은 μ˜ˆλŠ” NFT λ―ΌνŒ… μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. μ„œλ²„λŠ” 이미지λ₯Ό μ—…λ‘œλ“œν•  수 μžˆλ„λ‘ ν•˜μ§€λ§Œ λ―ΌνŒ…μ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ 지갑을 톡해 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

β€œν’€ μŠ€μΌ€μΌβ€ DApps

이 DApp은 블둝체인 μœ„μ— κ΅¬μΆ•λ˜μ§€λ§Œ 쀑앙 집쀑식 API와 λ°±μ—”λ“œ μ„œλ²„μ— μ˜μ‘΄ν•©λ‹ˆλ‹€. 이듀은 λΆ€λΆ„μ μœΌλ‘œ 뢄산화될 수 있으며, ν΄λΌμ΄μ–ΈνŠΈλŠ” 지갑을 μ‚¬μš©ν•˜μ—¬ λΈ”λ‘μ²΄μΈμ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 일반적으둜 λ°±μ—”λ“œλ„ λΈ”λ‘μ²΄μΈμ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 μœ ν˜•μ˜ DApp의 쒋은 μ˜ˆλŠ” μžμ‚° 전솑을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ λΈ”λ‘μ²΄μΈμ—μ„œ 슀마트 계약과 톡신해야 ν•˜λŠ” 크둜슀 체인 λΈŒλ¦¬μ§€μž…λ‹ˆλ‹€.

Web2 취약점

Web2 취약점은 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—λ„ μ—¬μ „νžˆ 영ν–₯을 λ―ΈμΉ˜μ§€λ§Œ κ·Έ 영ν–₯은 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

  • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ 취약점은 Web3 DAppμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 일반적으둜 지갑을 톡해 λΈ”λ‘μ²΄μΈμ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 경우 영ν–₯이 μ¦κ°€ν•©λ‹ˆλ‹€. μ΄λŠ” XSS와 같은 곡격이 ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ JS μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κ±°λ‚˜ νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ λ³€μ‘°ν•  수 μžˆμ–΄, μ§€κ°‘κ³Ό μƒν˜Έμž‘μš©ν•˜κ³  μ‚¬μš©μžκ°€ λΈ”λ‘μ²΄μΈμ—μ„œ μ›ν•˜μ§€ μ•ŠλŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ 섀득할 수 μžˆλŠ” 더 큰 영ν–₯을 λ―ΈμΉ  수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
  • 일반적으둜 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλ„ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ§€κ°‘μœΌλ‘œ μ„œλͺ…ν•˜κΈ° 전에 μž‘μ—…μ„ κ²€ν† ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κ³΅κ²©μžκ°€ νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ λ³€μ‘°ν•  수 μžˆλ‹€λ©΄ μ‚¬μš©μžκ°€ λΈ”λ‘μ²΄μΈμ—μ„œ μ›ν•˜μ§€ μ•ŠλŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κ±°λž˜μ— μ„œλͺ…ν•˜λ„λ‘ 섀득할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„œλ²„ μΈ‘ 취약점은 μ—¬μ „νžˆ λ°±μ—”λ“œ μ„œλ²„μ— μ˜μ‘΄ν•˜λŠ” DAppμ—μ„œ μ‘΄μž¬ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ·¨μ•½μ μ˜ 영ν–₯은 DApp의 μ•„ν‚€ν…μ²˜μ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κ³΅κ²©μžκ°€ λ°±μ—”λ“œμ—μ„œ νšŒμ‚¬μ˜ ν‚€λ₯Ό μ°Ύμ•„ 슀마트 κ³„μ•½μ˜ μžκΈˆμ„ μ ‘κ·Όν•˜κ±°λ‚˜ 계정 νƒˆμ·¨λ₯Ό μˆ˜ν–‰ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° μžκΈˆμ΄λ‚˜ NFTλ₯Ό ν›”μΉ  수 μžˆλŠ” 경우 맀우 λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  DApp이 λ°±μ—”λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ±°λ‚˜ λ°±μ—”λ“œκ°€ 곡용 체인 λ°μ΄ν„°λ‚˜ 정적 νŽ˜μ΄μ§€λ§Œ μ œκ³΅ν•˜λŠ” 경우 DApp의 곡격 ν‘œλ©΄μ€ μ€„μ–΄λ“­λ‹ˆλ‹€.

Web3 곡격 ν‘œλ©΄

일반적으둜 DApp은 λΈ”λ‘μ²΄μΈμ—μ„œ 항상 μ—¬λŸ¬ λ³΄μ•ˆ 검사가 μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμ— 곡격 ν‘œλ©΄μ΄ μ€„μ–΄λ“€μ§€λ§Œ, μ—¬μ „νžˆ κ³΅κ²©μžκ°€ μ•…μš©ν•  수 μžˆλŠ” λͺ‡ κ°€μ§€ 곡격 벑터가 μžˆμŠ΅λ‹ˆλ‹€.

Web3 DApp의 취약점을 λ‹€μŒκ³Ό 같은 λ²”μ£Όλ‘œ κ·Έλ£Ήν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • 온체인 거래 처리 였λ₯˜: 잘λͺ»λœ ν˜•μ‹ λ˜λŠ” μ œν•œ μ—†λŠ” 거래 API, 응닡 λŒ€κΈ° 및 블둝 확인 둜직 λΆ€μ‘±, λ―Όκ°ν•œ 데이터 λ…ΈμΆœ, μ‹€νŒ¨, 되돌림 λ˜λŠ” λ‚΄λΆ€ μœ ν˜• 거래의 λΆ€μ μ ˆν•œ 처리둜 인해 μ•…μ˜μ μΈ calldata μ£Όμž…μ΄ κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

  • 슀마트 계약 기반 λ°±μ—”λ“œ 곡격: 검증 없이 계약과 λ°μ΄ν„°λ² μ΄μŠ€ 간에 λ―Όκ°ν•œ 데이터λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ 동기화, μ²΄ν¬λ˜μ§€ μ•Šμ€ 이벀트 방좜 λ˜λŠ” 계약 μ£Όμ†Œ, λ°±μ—”λ“œ λ‘œμ§μ„ μ˜€μ—Όμ‹œν‚¬ 수 μžˆλŠ” μ•…μš© κ°€λŠ₯ν•œ 계약 취약점.

  • 결함 μžˆλŠ” μ•”ν˜Έ μžμ‚° 운영: λ‹€μ–‘ν•œ 토큰 μœ ν˜•(λ„€μ΄ν‹°λΈŒ vs. ERC-20) 잘λͺ» 처리, μ†Œμˆ˜μ  정밀도 λ¬΄μ‹œ, μ‹€νŒ¨ν•œ 전솑 λ˜λŠ” λ‚΄λΆ€ 거래, 검증 없이 κ°€μ§œ, λ””ν”Œλ ˆμ΄μ…˜, 리베이슀 λ˜λŠ” μŠ¬λ¦¬ν”Όμ§€μ— μ·¨μ•½ν•œ 토큰 수용, 토큰 메타데이터λ₯Ό ν†΅ν•œ νŽ˜μ΄λ‘œλ“œ μ£Όμž… κ°€λŠ₯.

이 κ²Œμ‹œλ¬Όμ—μ„œ λͺ‡ κ°€μ§€ μ˜ˆμ‹œ:

자금 λ‚­λΉ„: λ°±μ—”λ“œμ— 거래 μˆ˜ν–‰ κ°•μ œ

μ œν•œ μ—†λŠ” APIλ₯Ό ν†΅ν•œ κ°€μŠ€ λ‚­λΉ„ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ κ³΅κ²©μžλŠ” λ°±μ—”λ“œκ°€ κ°€μŠ€λ₯Ό μ†Œλͺ¨ν•˜λŠ” 슀마트 κ³„μ•½μ˜ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ„λ‘ κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ³΅κ²©μžλŠ” ETH κ³„μ’Œ 번호λ₯Ό 보내고 μ œν•œ 없이 λ°±μ—”λ“œκ°€ 슀마트 계약을 λ“±λ‘ν•˜λ„λ‘ κ°•μ œν•˜μ—¬ κ°€μŠ€λ₯Ό μ†Œλͺ¨ν•˜κ²Œ ν•©λ‹ˆλ‹€.

DoS: λΆˆλŸ‰ 거래 처리 μ‹œκ°„

λΆˆλŸ‰ 거래 μ‹œκ°„ μ²˜λ¦¬κ°€ DoS둜 이어짐 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” λ°±μ—”λ“œκ°€ κ±°λž˜κ°€ μˆ˜ν–‰λ  λ•ŒκΉŒμ§€ HTTP μš”μ²­μ„ 열어두기 λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ λ°±μ—”λ“œμ— μ—¬λŸ¬ HTTP μš”μ²­μ„ μ‰½κ²Œ 보내 λ°±μ—”λ“œμ˜ λͺ¨λ“  μžμ›μ„ μ†Œλͺ¨ν•˜κ²Œ λ˜μ–΄ DoS둜 μ΄μ–΄μ§ˆ 수 μžˆλ‹€κ³  μ„€λͺ…ν•©λ‹ˆλ‹€.

λ°±μ—”λ“œ<–>블둝체인 비동기 - 경쟁 쑰건

λΆˆλŸ‰ 거래 μ‹œκ°„ μ²˜λ¦¬κ°€ 경쟁 쑰건으둜 이어짐 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” κ²Œμž„μ—μ„œ μ‚¬μš©μžκ°€ λ°±μ—”λ“œμ— 좜금 μš”μ²­μ„ 보내고 κ±°λž˜κ°€ μ²˜λ¦¬λ˜λŠ” λ™μ•ˆ κ·Έ 코인을 μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ—μ„œ μ•„μ΄ν…œμ„ ꡬ맀할 수 μžˆμ—ˆλ˜ 경우λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” 무료둜 μ•„μ΄ν…œμ„ 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

또 λ‹€λ₯Έ μ˜ˆμ‹œλŠ” λ°±μ—”λ“œκ°€ κ±°λž˜κ°€ 확인될 λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  μ¦‰μ‹œ μ•„μ΄ν…œμ„ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜μ—¬ λ™μΌν•œ 코인을 μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ•„μ΄ν…œμ„ ꡬ맀할 수 μžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€.

슀마트 계약 μ£Όμ†Œ 검증

λΈŒλ¦¬μ§€ λ°±μ—”λ“œκ°€ 슀마트 계약 μ£Όμ†Œ 검증 λΆ€μ‘± μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” λ°±μ—”λ“œκ°€ 슀마트 κ³„μ•½μ˜ μ£Όμ†Œλ₯Ό ν™•μΈν•˜κ³  μžˆμ—ˆκΈ° λ•Œλ¬Έμ— κ³΅κ²©μžκ°€ κ°€μ§œ 슀마트 계약을 λ°°ν¬ν•˜κ³  μžκΈˆμ„ 넣은 ν›„ 거래λ₯Ό λ°±μ—”λ“œμ— 보내면 λ°±μ—”λ“œκ°€ μ‚¬μš©μžκ°€ μ‹€μ œ 슀마트 계약에 μžκΈˆμ„ λ³΄λƒˆλ‹€κ³  μƒκ°ν•˜κ³  μ‚¬μš©μžμ—κ²Œ 토큰을 μ œκ³΅ν•˜κ²Œ λ©λ‹ˆλ‹€.

μžμ‚° 클래슀 처리 였λ₯˜

μžμ‚° 클래슀 처리 였λ₯˜ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” λ°±μ—”λ“œκ°€ μ£Όμ†Œμ— μžˆλŠ” 사기 NFTλ₯Ό 1 MATIC으둜 ν˜Όλ™ν•˜μ—¬ κ³΅κ²©μžκ°€ 수백 개의 사기 NFTλ₯Ό ν•΄λ‹Ή μ£Όμ†Œλ‘œ 보내고 ν”Œλž«νΌμ—μ„œ 각각 1 MATIC을 받도둝 ν—ˆμš©ν–ˆλ‹€κ³  μ„€λͺ…ν•©λ‹ˆλ‹€.

μ°Έκ³  λ¬Έν—Œ

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 μ§€μ›ν•˜κΈ°