ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ. ΠΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ Π·Π°Ρ
Π²Π°ΡΠ°ΠΌΠ΅ Ρ ΡΠ°Π±ΠΎΡΠ° ΠΈ Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡΠ½ΠΈ ΡΡΠ°ΡΡΠΎΠ²Π΅ ΠΏΡΠ΅Π· ΡΠ½ΡΠ°ΡΠΈ. ΠΠ°ΡΠ΅Π΄ Ρ Π΄ΡΡΠ³ΠΎΡΠΎ Π΅ ΠΎΠ±ΡΠ²Π΅Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° Π½ΠΎΠ² ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π»ΡΠ±ΠΈΠΌΠΈΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΡΡΡ.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° SUID ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΌΠ°Π»ΠΊΠΎ ΠΎΠ±ΡΡΠΊΠ²Π°ΡΠΈ.
ΠΡΠΈΡΠΊΠΈ Π·Π½Π°Π΅ΠΌ, ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
Π©Π΅ Π²ΠΈ ΡΠΏΠ΅ΡΡΡ ΠΌΠ°Π»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅: ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ root ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΈΠΌΠ°Ρ ΠΏΡΠ°Π²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΡΡ Π½Π΅ΡΠΎ, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΡΡΠ΄Π΅ΡΠ½ΠΈ Π·Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ root, Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄? ΠΠ° ΡΠ°ΡΡΠΈΠ΅, ΡΠΎΠ²Π° ΡΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Ubuntu, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° libcap2-bin
. Π©Π΅ ΡΡΡΠ±Π²Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π΅Π°ΡΡ
Π°ΠΈΡΠ½ΠΎ ΡΠ΄ΡΠΎ ββ(ΠΎΡ Π²Π΅ΡΡΠΈΡ 2.6.24).
Π’Π΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° SUID Π±ΠΈΡΠ°, Π½ΠΎ ΡΠ°ΠΌΠΎ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ setcap
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΉΠ».
ΠΡΡΠ²Π°ΡΠ° ΡΡΡΠΏΠΊΠ° Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°, ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅. ΠΠ° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΌ, ΡΠ΅ ΠΈΠΌΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°, Π½Π°ΡΠ΅ΡΠ΅Π½ tracewalk
, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ CAP_NET_RAW
.
ΠΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΡΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π΄Π²ΠΎΠΈΡΠ½ΠΈΡΡ ΡΠ°ΠΉΠ» tracewalk
, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
sudo setcap cap_net_raw=eip tracewalk
ΠΠ³Π½ΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΡΠΈΠΊΡΠ° Π·Π°ΡΠ΅Π³Π° =eip
Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ Π·Π° ΡΠΎΠ²Π° ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Ρ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ. ΠΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Ρ:
setcap -v cap_new_raw=eip tracewalk
ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±ΡΠΎΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° Π΄Π°Π΄Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ»:
getcap tracewalk
ΠΠ° ΡΠΏΡΠ°Π²ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡ ΡΠ°ΠΉΠ» Ρ:
setcap -r tracewalk
Π ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡ ΡΠ°ΠΉΠ» ΠΊΠ°ΡΠΎ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅ΡΠΈ, Π½ΠΎ Π΄Π° Π½ΡΠΌΠ° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ root ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΈΠΌΠ°.
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ·ΠΈ ΡΡΡΠ°Π½Π΅Π½ ΡΡΡΠΈΠΊΡ? =eip
? Π’ΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°. ΠΡΠ΅ΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠΌΠ° ΡΡΠΈ Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ β Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ, Π½Π°ΡΠ»Π΅Π΄ΠΈΠΌΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ:
- ΠΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅ΡΠΈ, Π°ΠΊΠΎ
CAP_NET_RAW
Π½Π΅ Π΅ Π² Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ. - ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°, Π°ΠΊΠΎ Π³ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΠ΅Π· ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. Π’Π΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈ ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ ΠΈ Π΄Π° Π±ΠΈΠ»ΠΎ, ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ Π΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΠΌ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠ΅ΡΠΈΠΎΠ΄Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ.
- ΠΠ°ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΈ Π² Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ Π½Π°Π±ΠΎΡ Π½Π° ΠΏΠΎΡΠΎΠ΄Π΅Π½ΠΈΡ Π΄ΡΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ
fork()
ΠΈΠ»ΠΈclone()
Π΄ΡΡΠ΅ΡΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΊΠΎΠΏΠΈΠ΅ ΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΡΡΠΈΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ» Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ°ΡΠ»Π΅Π΄ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΊΠΎΠ³Π°ΡΠΎexec()
(ΠΈΠ»ΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ) ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°, Π·Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡ ΡΠ°ΠΉΠ» Ρ Π΄ΡΡΠ³. Π ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Π»ΠΈΡΠ½ΠΈΡΡ Π½Π°Π±ΠΎΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° ΠΎΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΈΡ Π½Π°Π±ΠΎΡ, Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡΡ Π½Π°Π±ΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ.
Π’Π°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡΠ° setcap
Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠΈ Π½Π°Π±ΠΎΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π·Π° Π΄Π°Π΄Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ». ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠΈΡΠ΅ ΡΠ΅ ΡΡΠ»ΠΊΡΠ²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅:
- ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ», Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π³ΠΎ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π», Π½Π΅ Π³ΠΈ Π΅ ΠΈΠΌΠ°Π». ΠΡΠ΅Π΄ΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ Π° βΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΈβ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅Π»Π½ΠΈ.
- ΠΠ°ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½Π°Π±ΠΎΡΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Ρ. Π’Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΈΡ Π½Π°Π±ΠΎΡ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π° ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ Π² Π΄Π²Π°ΡΠ° Π½Π°Π±ΠΎΡΠ°.
- ΠΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π±ΠΈΡ, Π° Π½Π΅ Π½Π°Π±ΠΎΡ, ΠΈ Π°ΠΊΠΎ ΡΠ° Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅Π»ΠΈΡΡ Π½Π°Π»ΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΡΡΡΠΎ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ° Π² Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡ Π½Π°Π±ΠΎΡ Π½Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ, Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅ Π΅Π΄ΠΈΠ½ Π±ΠΈΡ, Π°ΠΊΠΎ Π³ΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΠΈ Π΄Π° Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° Π½Π΅Π³ΠΎ ΠΊΠ°ΡΠΎ Π·Π° Π½Π°ΡΠ»Π΅Π΄Π΅Π½ Π±ΠΈΡ, Π·Π°ΡΠΎΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ.
ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π· setcap
ΡΡΠΈ Π±ΡΠΊΠ²ΠΈ e
, i
ΠΈ p
ΡΠ΅ ΠΎΡΠ½Π°ΡΡΡ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π½Π°ΡΠ»Π΅Π΄ΠΈΠΌ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ. Π ΡΠ°ΠΊΠ°, ΠΏΠΎ-ΡΠ°Π½Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ:
sudo setcap cap_net_raw=eip tracewalk
...ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΡΠ° CAP_NET_RAW
ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΡΠΌ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΈΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΈ ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΡ Π±ΠΈΡ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½. Π’ΠΎΠ²Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ°ΠΉΠ»Π°. ΠΠ° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΡΠΊ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ ΡΡΡ Π·Π°ΠΏΠ΅ΡΠ°ΠΈ:
sudo setcap cap_net_admin,cap_net_raw=eip tracewalk
ΠΡΡΠ²ΠΎ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΠ»Π° Π½Π΅ ΡΠ°Π±ΠΎΡΡΡ ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ - ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ°ΠΌΠΈΡ Π΄Π²ΠΎΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» (Ρ.Π΅. ΡΠ΅Π»ΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π½Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ°).
ΠΡΠΎΡΠΎ, ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° Python. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°, Π·Π°ΡΠΎΡΠΎ ΡΠΎΠ³Π°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Ρ ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΎΠ²Π° Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΠΎΡ ΡΠΎΠ²Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ SUID. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ» Π½Π° C ΠΈΠ»ΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ ΡΠΊΡΠΈΠΏΡ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ Wireshark, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π²ΠΎΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» /usr/bin/dumpcap
Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
Π’ΡΠ΅ΡΠΎ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° LD_LIBRARY_PATH
ΠΏΠΎΡΠ°Π΄ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ(1). Π‘ΡΡΠΎΡΠΎ Π²Π°ΠΆΠΈ ΠΈ Π·Π° LD_PRELOAD
, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π·Π½Π°ΠΌ.
1. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ Π΅Π΄Π½Π° ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LD_LIBRARY_PATH
Π΄Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ ΡΡΡ ΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π½Π° ΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com