AppArmor

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

WhiteIntel ni injini ya utaftaji inayotumiwa na dark-web inayotoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wame vamiwa na malware za wizi.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na malware za wizi wa habari.

Unaweza kutembelea tovuti yao na kujaribu injini yao bure hapa:


Taarifa Msingi

AppArmor ni uboreshaji wa kernel ulioundwa kuzuia rasilimali zilizopo kwa programu kupitia maelezo ya programu, kutekeleza Udhibiti wa Kufikia wa Lazima (MAC) kwa kuunganisha sifa za kudhibiti upatikanaji moja kwa moja kwa programu badala ya watumiaji. Mfumo huu hufanya kazi kwa kupakia maelezo ya programu ndani ya kernel, kawaida wakati wa kuanza, na maelezo haya yanadhibiti ni rasilimali gani programu inaweza kupata, kama vile uhusiano wa mtandao, ufikiaji wa soketi za moja kwa moja, na ruhusa za faili.

Kuna njia mbili za uendeshaji kwa maelezo ya AppArmor:

  • Hali ya Utekelezaji: Hali hii inatekeleza sera zilizoelezwa ndani ya maelezo, kuzuia hatua zinazokiuka sera hizi na kuingiza jaribio lolote la kukiuka kupitia mifumo kama syslog au auditd.

  • Hali ya Malalamiko: Tofauti na hali ya utekelezaji, hali ya malalamiko haikatazi hatua zinazoenda kinyume na sera ya maelezo. Badala yake, inaingiza jaribio hizi kama uvunjaji wa sera bila kutekeleza vizuizi.

Vipengele vya AppArmor

  • Moduli ya Kernel: Inayowajibika kwa utekelezaji wa sera.

  • Sera: Hufafanua sheria na vizuizi kwa tabia ya programu na ufikiaji wa rasilimali.

  • Mchambuzi: Hupakia sera ndani ya kernel kwa utekelezaji au kuripoti.

  • Zana: Hizi ni programu za mode ya mtumiaji zinazotoa kiolesura cha kuingiliana na kusimamia AppArmor.

Njia za Maelezo

Maelezo ya Apparmor kawaida hufutwa katika /etc/apparmor.d/ Kwa sudo aa-status utaweza kuorodhesha programu zinazozuiwa na maelezo fulani. Ikiwa unaweza kubadilisha herufi "/" kwa kipindi cha njia ya kila programu iliyoorodheshwa utapata jina la maelezo ya apparmor ndani ya folda iliyotajwa.

Kwa mfano, maelezo ya apparmor kwa /usr/bin/man yatakuwa yanapatikana katika /etc/apparmor.d/usr.bin.man

Amri

aa-status     #check the current status
aa-enforce    #set profile to enforce mode (from disable or complain)
aa-complain   #set profile to complain mode (from diable or enforcement)
apparmor_parser #to load/reload an altered policy
aa-genprof    #generate a new profile
aa-logprof    #used to change the policy when the binary/program is changed
aa-mergeprof  #used to merge the policies

Kuunda wasifu

  • Ili kuelezea programu inayohusika, njia kamili na manyoya huruhusiwa (kwa ajili ya kutambua faili kwa kutumia manyoya) kwa kufafanua faili.

  • Ili kuelezea upatikanaji wa programu kuu kwa faili zifuatazo mamabara ya upatikanaji yanaweza kutumika:

  • r (soma)

  • w (andika)

  • m (ramani ya kumbukumbu kama inayoweza kutekelezwa)

  • k (kufunga faili)

  • l (kuunda viungo vya ngumu)

  • ix (kutekeleza programu nyingine na programu mpya kurithi sera)

  • Px (kutekeleza chini ya wasifu mwingine, baada ya kusafisha mazingira)

  • Cx (kutekeleza chini ya wasifu wa mtoto, baada ya kusafisha mazingira)

  • Ux (kutekeleza bila kizuizi, baada ya kusafisha mazingira)

  • Viarasa vinaweza kutajwa katika maelezo na vinaweza kubadilishwa kutoka nje ya wasifu. Kwa mfano: @{PROC} na @{HOME} (ongeza #include <tunables/global> kwenye faili ya wasifu)

  • Mipangilio ya kukataa inasaidia kubadilisha viwango vya kuruhusu.

aa-genprof

Ili kuanza kwa urahisi kuunda wasifu, apparmor inaweza kukusaidia. Ni rahisi kufanya apparmor ichunguze vitendo vinavyofanywa na programu kuu na kisha kuruhusu au kukataa vitendo. Unahitaji tu kukimbia:

sudo aa-genprof /path/to/binary

Kisha, kwenye konsoli tofauti tekeleza hatua zote ambazo kawaida binary itatekeleza:

/path/to/binary -a dosomething

Kisha, kwenye console ya kwanza bonyeza "s" na kisha kwenye hatua zilizorekodiwa eleza ikiwa unataka kusitisha, kuruhusu, au chochote. Ukimaliza bonyeza "f" na wasifu mpya utaundwa katika /etc/apparmor.d/path.to.binary

Kwa kutumia mishale unaweza kuchagua unachotaka kuruhusu/kukataa/chochote

aa-easyprof

Unaweza pia kuunda kiolezo cha wasifu wa apparmor wa binary na:

sudo aa-easyprof /path/to/binary
# vim:syntax=apparmor
# AppArmor policy for binary
# ###AUTHOR###
# ###COPYRIGHT###
# ###COMMENT###

#include <tunables/global>

# No template variables specified

"/path/to/binary" {
#include <abstractions/base>

# No abstractions specified

# No policy groups specified

# No read paths specified

# No write paths specified
}

Tafadhali elewa kwamba kwa chaguo-msingi katika wasifu ulioundwa hakuna kitu kilichoruhusiwa, hivyo kila kitu kimekataliwa. Utahitaji kuongeza mistari kama /etc/passwd r, kuruhusu kusoma faili ya binary /etc/passwd kwa mfano.

Unaweza kisha kuimarisha wasifu mpya na

sudo apparmor_parser -a /etc/apparmor.d/path.to.binary

Kubadilisha wasifu kutoka kwenye magogo

Zana ifuatayo itasoma magogo na kuuliza mtumiaji ikiwa anataka kuruhusu baadhi ya vitendo vilivyozuiliwa vilivyogunduliwa:

sudo aa-logprof

Kwa kutumia mishale unaweza kuchagua unachotaka kuruhusu/kukataa/au chochote

Kusimamia Wasifu

#Main profile management commands
apparmor_parser -a /etc/apparmor.d/profile.name #Load a new profile in enforce mode
apparmor_parser -C /etc/apparmor.d/profile.name #Load a new profile in complain mode
apparmor_parser -r /etc/apparmor.d/profile.name #Replace existing profile
apparmor_parser -R /etc/apparmor.d/profile.name #Remove profile

Kumbukumbu

Mfano wa kumbukumbu za AUDIT na DENIED kutoka kwa /var/log/audit/audit.log ya programu inayoweza kutekelezwa service_bin:

type=AVC msg=audit(1610061880.392:286): apparmor="AUDIT" operation="getattr" profile="/bin/rcat" name="/dev/pts/1" pid=954 comm="service_bin" requested_mask="r" fsuid=1000 ouid=1000
type=AVC msg=audit(1610061880.392:287): apparmor="DENIED" operation="open" profile="/bin/rcat" name="/etc/hosts" pid=954 comm="service_bin" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

Unaweza pia kupata habari hii kwa kutumia:

sudo aa-notify -s 1 -v
Profile: /bin/service_bin
Operation: open
Name: /etc/passwd
Denied: r
Logfile: /var/log/audit/audit.log

Profile: /bin/service_bin
Operation: open
Name: /etc/hosts
Denied: r
Logfile: /var/log/audit/audit.log

AppArmor denials: 2 (since Wed Jan  6 23:51:08 2021)
For more information, please see: https://wiki.ubuntu.com/DebuggingApparmor

Apparmor katika Docker

Tafadhali kumbuka jinsi wasifu docker-profile wa docker unavyopakiwa kwa chaguo-msingi:

sudo aa-status
apparmor module is loaded.
50 profiles are loaded.
13 profiles are in enforce mode.
/sbin/dhclient
/usr/bin/lxc-start
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/chromium-browser/chromium-browser//browser_java
/usr/lib/chromium-browser/chromium-browser//browser_openjdk
/usr/lib/chromium-browser/chromium-browser//sanitized_helper
/usr/lib/connman/scripts/dhclient-script
docker-default

Kwa chaguo-msingi Profaili ya Apparmor ya docker-default inatengenezwa kutoka https://github.com/moby/moby/tree/master/profiles/apparmor

Muhtasari wa Profaili ya docker-default:

  • Upatikanaji wa mtandao wote

  • Uwezo wowote haujatambuliwa (Hata hivyo, baadhi ya uwezo utatoka kwa kuingiza sheria za msingi za msingi ya #include <abstractions/base>)

  • Kuandika kwenye faili yoyote ya /proc haikubaliki

  • Vidirisha vingine/faili vya /proc na /sys vinaruhusiwa kusoma/kuandika/kufunga/kuunganisha/kutekeleza

  • Kufunga haikubaliki

  • Ptrace inaweza kufanywa kwenye mchakato ambao umefungwa na profaili sawa ya apparmor

Maranyingi unapoendesha chombo cha docker unapaswa kuona matokeo yafuatayo:

1 processes are in enforce mode.
docker-default (825)

Tafadhali elewa kwamba apparmor itazuia hata uwezo wa ruhusa uliopewa kontena kwa chaguo-msingi. Kwa mfano, itakuwa na uwezo wa kuzuia ruhusa ya kuandika ndani ya /proc hata kama uwezo wa SYS_ADMIN umepewa kwa sababu kwa chaguo-msingi, wasifu wa apparmor wa docker unakataa ufikiaji huu:

docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined ubuntu /bin/bash
echo "" > /proc/stat
sh: 1: cannot create /proc/stat: Permission denied

Unahitaji kulemaza apparmor ili kuzidi vizuizi vyake:

docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu /bin/bash

Tafadhali kumbuka kwamba kwa chaguo-msingi AppArmor pia itazuia kontena kufunga folda kutoka ndani hata na uwezo wa SYS_ADMIN.

Tafadhali kumbuka unaweza kuongeza/kuondoa uwezo kwa kontena ya docker (hii bado itazuiliwa na njia za ulinzi kama AppArmor na Seccomp):

  • --cap-add=SYS_ADMIN inatoa uwezo wa SYS_ADMIN

  • --cap-add=ALL inatoa uwezo wote

  • --cap-drop=ALL --cap-add=SYS_PTRACE inaondoa uwezo wote na kutoa tu SYS_PTRACE

Kawaida, unapopata kwamba una uwezo wa kipekee uliopo ndani ya kontena ya docker lakini sehemu fulani ya kudukua haifanyi kazi, hii ni kwa sababu apparmor ya docker itakuwa inazuia.

Mfano

(Mfano kutoka hapa)

Ili kufafanua utendaji wa AppArmor, niliunda wasifu mpya wa Docker "mydocker" na mstari ufuatao uliongezwa:

deny /etc/* w,   # deny write for all files directly in /etc (not in a subdir)

Ili kuanzisha wasifu, tunahitaji kufanya yafuatayo:

sudo apparmor_parser -r -W mydocker

Kutaja maelezo, tunaweza kutumia amri ifuatayo. Amri hapa chini inataja maelezo yangu ya AppArmor mpya.

$ sudo apparmor_status  | grep mydocker
mydocker

Kama inavyoonekana hapa chini, tunapata kosa tunapojaribu kubadilisha "/etc/" kwani wasifu wa AppArmor unazuia ufikio wa kuandika kwenye "/etc".

$ docker run --rm -it --security-opt apparmor:mydocker -v ~/haproxy:/localhost busybox chmod 400 /etc/hostname
chmod: /etc/hostname: Permission denied

Kizuizi cha AppArmor cha Docker Bypass1

Unaweza kujua ni wasifu gani wa apparmor unatumika kwenye kontena kwa kutumia:

docker inspect 9d622d73a614 | grep lowpriv
"AppArmorProfile": "lowpriv",
"apparmor=lowpriv"

Kisha, unaweza kukimbia mstari ufuatao kupata wasifu sahihi unao tumika:

find /etc/apparmor.d/ -name "*lowpriv*" -maxdepth 1 2>/dev/null

Kizuizi cha AppArmor Docker Bypass2

AppArmor inategemea njia, hii inamaanisha kwamba hata kama inaweza kulinda faili ndani ya saraka kama /proc ikiwa unaweza kuweka jinsi kontena itakavyotekelezwa, unaweza kumount saraka ya proc ya mwenyeji ndani ya /host/proc na hakitakuwa chini ya ulinzi wa AppArmor tena.

Kizuizi cha Shebang cha AppArmor

Katika kosa hili unaweza kuona mfano wa jinsi hata kama unazuia perl kutumika na rasilimali fulani, ikiwa tu unajenga script ya shel ukiainisha kwenye mstari wa kwanza #!/usr/bin/perl na utekeleza faili moja kwa moja, utaweza kutekeleza chochote unachotaka. K.m.:

echo '#!/usr/bin/perl
use POSIX qw(strftime);
use POSIX qw(setuid);
POSIX::setuid(0);
exec "/bin/sh"' > /tmp/test.pl
chmod +x /tmp/test.pl
/tmp/test.pl

WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wameathiriwa na malwares za kuiba.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na programu hasidi za kuiba taarifa.

Unaweza kutembelea tovuti yao na kujaribu injini yao kwa bure kwa:

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated