MD5부터 SHA-512까지 해시 함수 실습, 재진입·오버플로·접근제어 등 스마트 컨트랙트 취약점 체험, Ganache + MetaMask 로컬 환경 구축 가이드까지 한 번에.
NFT · STO · DeFi · 스테이블코인 · RWA — 글로벌·국내 시장 분석
| 유형 | 대표 코인 | 특징 | 보안 이슈 |
|---|---|---|---|
| 법정화폐 담보형 | USDT · USDC · PYUSD | 달러 1:1 담보 · 시장 점유율 1위 · USDT $1,200억+ | 중앙화 위험 · 발행사 파산 리스크 |
| 암호자산 담보형 | DAI · LUSD | ETH 과담보(150%+) · 탈중앙화 특성 유지 | 담보 자산 급락 시 청산 위험 |
| 알고리즘형 | FRAX · crvUSD | 공급량 알고리즘 조절 · 테라/루나 붕괴 이후 하이브리드 | 고위험 디페깅 · 뱅크런 |
| CBDC | e-CNY · 디지털 유로 | 중앙은행 직접 발행 · 중국 전국 확대 · 한은 파일럿 중 | 프라이버시 침해 우려 · 국가 감시 가능성 |
| 법령 | 시행 | 핵심 내용 | 보안 연계 |
|---|---|---|---|
| 특정금융정보법 | 2021.03 | VASP 신고 의무 · 실명계좌 · AML/KYC · Travel Rule | 온체인 자금추적 · 블록체인 분석 |
| 가상자산이용자보호법 | 2024.07 | 이용자 자산 보호 · 불공정거래 금지 · 이상거래 모니터링 | AI 기반 이상거래 탐지 의무화 |
| 전자증권법 개정 (STO) | 2026.01 | 발행인계좌관리기관 · 토큰증권 발행 허용 | ISMS-P 가상자산사업자 대상 강화 |
| 디지털자산기본법 | 논의 중 | 원화 스테이블코인 · 종합 규율 · 과세 체계 | DeFi·NFT 법적 지위 명확화 필요 |
퍼블릭 블록체인
이더리움 · 비트코인 · 솔리디티 스마트 컨트랙트 보안
계산 중...
충돌 공격 가능, 비밀번호 해싱 절대 금지
계산 중...
Google이 2017년 충돌 쌍 공개. 인증서 폐기됨
계산 중...
비트코인 PoW, TLS 1.3, JWT 서명에 사용
계산 중...
비밀번호 해싱(bcrypt/Argon2 함께 사용 권장)
입력 1글자 변경 → 해시 전체가 완전히 달라짐을 확인하세요.
SHA-256(데이터 + nonce)가 목표 접두사로 시작하는 nonce를 찾습니다. 난이도가 높을수록 시도 횟수가 기하급수적으로 증가합니다.
Ganache 로컬 네트워크를 시뮬레이션합니다. 취약한 Bank 컨트랙트에 재진입(Re-entrancy) 공격을 가해보고, CEI 패턴으로 방어하는 과정을 단계별로 체험하세요.
Ganache 로컬 네트워크 시뮬레이션 — 가짜 ETH 사용
// ⚠️ 취약한 컨트랙트 (재진입 공격 가능)
pragma solidity ^0.8.0;
contract VulnerableBank {
mapping(address => uint) public balances;
function deposit() public payable {
balances[msg.sender] += msg.value;
}
function withdraw() public {
uint amount = balances[msg.sender];
require(amount > 0, "잔액 없음");
// ❌ 잔액 차감 전에 ETH 전송 → 재진입 허용
(bool ok,) = msg.sender.call{value: amount}("");
require(ok, "전송 실패");
balances[msg.sender] = 0; // 너무 늦음!
}
}📋 단계별 실습 — 순서대로 실행하세요
📚 실습 가이드 — 로컬 Ganache 환경 직접 구축하기
# 1. Ganache 설치 (로컬 이더리움 노드)
$ npm install -g ganache
# 2. 로컬 테스트넷 실행 (포트 8545)
$ ganache --networkId 1337 --accounts 10 --defaultBalanceEther 100
# 3. Hardhat 프로젝트 초기화
$ npx hardhat init
# 4. VulnerableBank.sol 배포
$ npx hardhat run scripts/deploy.js --network localhost
# 5. 재진입 공격 테스트
$ npx hardhat test test/reentrancy.test.js
스마트 컨트랙트에서 자주 발생하는 5가지 취약점을 코드로 직접 확인하세요. 취약한 코드와 안전한 코드를 비교하며 방어 패턴을 익힐 수 있습니다. (Lab 4: tx.origin 피싱 · Lab 5: 서명 재사용 공격 신규 추가)
Integer Overflow / Underflow
// ⚠️ 취약 — Solidity 0.7: 오버플로 체크 없음
pragma solidity ^0.7.0;
contract UnsafeCounter {
mapping(address => uint256) public balances;
// 공격: deposit(type(uint256).max) 후 deposit(1)
// → 0으로 래핑됨! (잔액 폭발 → 0)
function deposit(uint256 amount) public {
balances[msg.sender] += amount; // ❌ 오버플로 발생 가능
}
// 공격: 잔액 0인 상태에서 transfer(10, victim)
// → 0 - 10 = 2^256-10 (언더플로 → 무한 잔액!)
function transfer(address to, uint256 amount) public {
balances[msg.sender] -= amount; // ❌ 언더플로 발생 가능
balances[to] += amount;
}
function withdraw(uint256 amount) public {
require(balances[msg.sender] >= amount, "insufficient");
balances[msg.sender] -= amount;
msg.sender.transfer(amount);
}
}⚠️ 왜 취약한가?
Solidity 0.7 이하에서 uint256 덧셈이 최댓값을 초과하면 0으로, 뺄셈이 0 미만이 되면 최댓값으로 래핑됩니다. 공격자는 잔액을 0으로 만들거나 반대로 무한대로 만들어 출금할 수 있습니다.
✅ 방어 방법
Solidity 0.8.0부터 오버플로/언더플로 발생 시 트랜잭션이 자동으로 revert됩니다. 0.7 이하 버전이라면 OpenZeppelin의 SafeMath 라이브러리를 사용하세요.
📰 실제 해킹 사례
BECToken 해킹 (2018) — batchTransfer()의 오버플로로 공격자가 토큰 58억 개를 무상 생성. 시가총액 약 $9,000만 순간 증발.
담보 없이 수백억 원을 빌려 단 1개 트랜잭션으로 DeFi 프로토콜을 탈취하는 플래시론 공격의 전 과정을 시뮬레이션합니다.
담보 없이 수백억을 빌려 1개 트랜잭션으로 탈취하는 DeFi 핵심 공격
💧 대출 풀 잔액
5,000 ETH
🔴 공격자 수익
0 ETH
1. 플래시론 대출 요청
담보 없이 1,000 ETH를 대출 (단, 같은 블록 내 상환 조건)
2. 가격 오라클 조작
대출한 ETH로 DEX에서 대량 매도 → TOKEN 가격 폭락 (정상가의 10%로)
3. 헐값에 담보 청산
TOKEN 대출 프로토콜에서 저가 오라클 기준으로 담보 헐값 청산 → 900 ETH 추가 획득
4. 플래시론 상환
처음 빌린 1,000 ETH + 수수료(0.09%) 상환
5. 수익 실현
단 1개 트랜잭션으로 800 ETH 순이익 — 담보 없이, 자본 없이!
💡 Flash Loan 공격이 가능한 이유
원자성 (Atomicity)
모든 단계가 1개 트랜잭션 안에 있어 중간 실패 시 전부 롤백됩니다.
무담보 대출
대출 요청과 상환이 같은 블록이면 담보 없이 무제한 대출이 가능합니다.
가격 오라클 의존
DEX 현물가를 오라클로 사용하면 대규모 매도로 가격 조작이 가능합니다.
방어 방법
TWAP 오라클(시간가중평균), 재진입 방지, 플래시론 감지 플래그 사용.
📰 실제 사례
bZx 해킹(2020, $35만) — 플래시론 첫 대규모 공격 · Harvest Finance(2020, $3,400만) · Mango Markets(2022, $1.14억) · Euler Finance(2023, $1.97억, 이후 복구). 모두 담보 없이 수십억 원을 단 1 TX로 탈취.
블록체인 보안의 시작점. 지갑 유형별 특성·개인키 황금 규칙·공격 유형·보안 체크리스트를 확인하세요.
블록체인 보안의 시작은 지갑 — 개인키를 잃으면 자산도 잃는다
Hot Wallet
✓ 편리성 높음
✓ 즉시 접근 가능
✓ DApp 연동 용이
✗ 인터넷 연결 → 해킹 위험
✗ 피싱·악성코드 취약
✗ 소액 거래 전용 권장
💡 권장 사용: 일일 거래·DApp 소액 사용
Cold Wallet
✓ 오프라인 보관
✓ 해킹 불가(에어갭)
✓ 대량 자산 보관 적합
✗ 접근 불편
✗ 분실·파손 위험
✗ 하드웨어 구매 필요
💡 권장 사용: 장기 보유·대량 자산
Multi-Sig
✓ N-of-M 서명 요건
✓ 단독 해킹 불가
✓ 기관·DAO에 적합
✗ 설정 복잡
✗ 모든 서명자 협의 필요
✗ 속도 느림
💡 권장 사용: DAO 재무·기업 자산·대규모 DeFi
Smart Contract Wallet
✓ 계정 복구 가능
✓ 소셜 리커버리
✓ 가스 후원(ERC-4337)
✗ 스마트 컨트랙트 위험
✗ 복잡한 로직
✗ 신규 기술
💡 권장 사용: 차세대 Web3 계정 추상화
Ganache 로컬 블록체인에 MetaMask를 연결하고 VS Code + Hardhat으로 스마트 컨트랙트를 배포·공격·방어하는 전 과정을 단계별로 안내합니다.
실제 로컬 블록체인으로 스마트 컨트랙트 해킹·방어 직접 실습
Ganache GUI 다운로드 및 설치
Windows / macOS / Linux 모두 지원
Ganache 실행 → QUICKSTART 클릭
로컬 포트 8545, Chain ID 1337 자동 구성 10개 테스트 계정 × 100 ETH 자동 생성
계정 개인키 확인 (🔑 아이콘)
각 계정 우측 🔑 버튼 → 개인키(Private Key) 복사 → MetaMask 계정 가져오기에 사용
하이퍼레저 패브릭 보안 실습
별도 페이지비결정론적 코드 · CouchDB 인젝션 · 체인코드 접근제어 · Private Data 우회 · MSP 인증서 — 5가지 Lab + 환경 구축
51% 공격
51% Attack
전체 해시레이트의 과반수를 점유하면 블록체인을 조작할 수 있습니다. 이중 지불(Double-spend)이 가능해집니다.
📰 실제 사례
2019년 이더리움 클래식(ETC) 51% 공격 — 107,000 ETC ($550만) 이중 지불
스마트 컨트랙트 취약점
Re-entrancy Attack
Re-entrancy 공격: 외부 컨트랙트 호출 중 잔액 확인 전에 재진입하여 자금을 반복 출금합니다.
📰 실제 사례
The DAO 해킹 (2016) — Re-entrancy로 $6,000만 탈취. 이더리움 하드포크 원인.
프라이빗 키 분실
Private Key Loss
블록체인의 익명성은 양날의 검. 프라이빗 키를 잃으면 자산을 영구 복구 불가능합니다.
📰 실제 사례
약 400만 BTC (전체의 20%)가 분실된 키로 영구 접근 불가 상태로 추정됩니다.
피싱 & 소셜 엔지니어링
Phishing
가짜 지갑 앱, 가짜 DEX, 메타마스크 시드 피싱, 무제한 토큰 승인(Approval) 사기가 가장 흔한 공격입니다.
📰 실제 사례
2022년 블록체인 해킹 피해의 70%가 피싱·소셜 엔지니어링으로 발생.
오라클 조작
Oracle Manipulation
스마트 컨트랙트는 외부 데이터(가격 피드)를 믿습니다. 단일 오라클을 조작하면 DeFi 프로토콜을 무력화할 수 있습니다.
📰 실제 사례
Mango Markets 해킹 (2022) — 오라클 가격 조작으로 $1.14억 탈취.
플래시론 공격
Flash Loan Attack
담보 없이 수억 달러를 한 트랜잭션에서 빌려 AMM 가격을 순간 조작하고 이익을 취한 뒤 상환합니다.
📰 실제 사례
bZx 해킹 (2020) — 플래시론으로 2회에 걸쳐 약 $100만 탈취. 새로운 공격 유형 탄생.