הזדהות של Windows Server 2008 מול squid

בפרוקסי Squid ישנה אפשרות לבצע אימות מול שרת AD באמצעות winbindd,
לפני מספר חודשים הגדרתי את השרת Squid בצורה כזו, והוא עבד יפה מול Windows Server 2003.

בימים האחרונים פנה אלי האחראי מחשבים במוסד בו התקנתי את זה ואמר שבWindows Server 2008 הפרוקסי דורש סיסמה ולא מאשר התחברות וביקש שאטפל בזה,
דבר ראשון בדקתי את הבעיה, בלוג (/var/log/samba/log.wb-MYDOMAIN) השגיאות היו נראות בסגנון זה:

[ 3] winbindd/winbindd_pam.c:winbindd_dual_pam_auth_crap(1825)
  [ 2058]: pam auth crap domain: MYDOMAIN user: user
[ 0] winbindd/winbindd_pam.c:winbindd_dual_pam_auth_crap(1837)
  winbindd_pam_auth_crap: invalid password length 24/276
[ 2] winbindd/winbindd_pam.c:winbindd_dual_pam_auth_crap(1990)
  NTLM CRAP authentication for user [MYDOMAIN]\[user] returned NT_STATUS_INVALID_PARAMETER (PAM: 4)

חיפוש באינטרנט הניב את התוצאה שיש צורך לשנות בווינדוס את ההגדרה הזו:

מדיניות אבטחה מקומית > הגדרות אבטחה > מדיניות מקומית > אפשרויות אבטחה >
אבטחת רשת: רמת אימות של LAN Manager

לאפשרות שתאפשר שליחה של NTLM רגיל.
שיניתי והבעיה נפתרה במזל טוב.

השמשה של USB Phone בלינוקס

יש לכם טלפון USB שעובד בווינדוס עם סקייפ ואין לכם מושג איך להפעיל אותו בלינוקס?
נסו לכתוב בטרמינל (terminal\מסוף\Shell או איך שאתם מעדיפים לקרוא לזה): lsusb, יוצא לכם בפלט את השורה הזו?

$ lsusb
...
Bus 006 Device 006: ID 0851:c080 Macronix International Co., Ltd
...

אז כנראה שיש לכם אותה שפורפרת USB כמו שלי, הנה מדריך איך אפשר להשמיש אותה בלינוקס,

קודם קצת פרטים על השפורפרת:
השפורפרת מזוהה ע"י הלינוקס (דביאן) ככרטיס קול וכהתקן HID
בכל שידור מהשפופרת להתקן במחשב /dev/hidraw0 נשלחים 8 בייט, בלחיצה 8 ובשחרור 8.

ונעבור לקצת פרטים על התוכנות שישמשו אותנו:
udev – לענייננו, תוכנה שמנטרת חיבור חומרה למחשב ומאפשרת פעולות עקב אירועי חומרה.
xdotool – לענייננו, תוכנה המאפשרת שליחת מקשים מתוך סקריפטים,
הערה: xdotool עובדת על גבי שרת הX.
sflphone – תוכנת VoIP.

ועכשיו לסקריפט הBASH שישמש אותנו על מנת לקרוא את המידע מהשפורפרת ולהעביר אותו בצורה שמישה,
את הסקריפט נשמור ב: /home/<user>/bin/USB-phone.sh (כמובן לשנות לתיקיית משתמש שלכם)

#!/bin/bash

export DISPLAY=:0;	# ‫בחירת תצוגה לפעילות‪

function update_wid {
	local tmp=( $(wmctrl -l|grep "SFLphone VoIP Client") );	# ‫בחירה בחלון של SFLphone‪
	[[ -n "${tmp[0]}" ]] && opt="--window ${tmp[0]}" || opt="";	# ‫הגדרת המשתנה opt לצורת העבודה בשביל xdotool‪
	echo "update wid: ${tmp[0]}";
}

update_wid;	# ‫עדכון הגדרת חלון או כללי לxdotool‪
speaker="B0";	# ‫משתנה דו מצבי של הרמקול המובנה בשפופרת‪

cat /dev/hidraw0 |
 while read -n1 in[0]; do
for ((i=1;i<=15;i++)); do
	read -n1 in[$i];
done;	# ‫קריאת 16 בייטים, 8 של  לחיצת כפתור ו8 של שחרור כפתור‪

a="$(printf %d \'"${in[0]}")";	# ‫המרת הבייטים הרלוונטיים למספרים דצימליים‪
b="$(printf %d \'"${in[2]}")";	# ‫^^^‪

if [[ "$a" == "0" ]]; then
	if [[ "$b" -le "38" &&  "$b" -ge "30" ]]; then
		xdotool type $opt $((b-29));	# ‫הספרות 1,2,4,5,6,7,8,9‪
	elif [[ "$b" == "0" ]]; then
		xdotool type $opt 3;	# ‫הספרה 3‪
	elif [[ "$b" == "39" ]]; then
                xdotool type $opt 0;	# ‫הספרה 0‪
        elif [[ "$b" == "81" ]]; then
		xdotool key $opt Down;	# ‫כפתור למטה‪
        elif [[ "$b" == "82" ]]; then
                xdotool key $opt Up;	# ‫כפתור למעלה‪
	fi
elif [[ "$a" == "2" ]]; then
	if [[ "$b" == "37" ]]; then
		xdotool keydown SHIFT; xdotool type $opt "*"; xdotool keyup SHIFT;	# ‫כוכבית‪
	elif [[ "$b" == "0" ]]; then
                xdotool keydown SHIFT; xdotool type $opt "#"; xdotool keyup SHIFT;	# ‫סולמית‪
        fi
elif [[ "$a" == "7" ]]; then
        if [[ "$b" == "0" ]]; then	# ‫כפתור C‪
                xdotool key $opt BackSpace; 
        elif [[ "$b" == "4" ]]; then	# ‫כפתור חיוג‪
                xdotool key $opt Return;	# ‫שליחת אנטר‪
        elif [[ "$b" == "11" ]]; then	# ‫כפתור ניתוק‪
                xdotool key $opt Escape;	# ‫שליחת אסקייפ‪
        elif [[ "$b" == "12" ]]; then	# ‫כפתר פונקציות שמאלי‪
                update_wid;	# ‫עדכון הגדרות שליחה לחלון או שליחה כללית‪
	elif [[ "$b" == "22" ]]; then	# ‫כפתור רמקול‪
                echo -e "\x${speaker}" >> /dev/hidraw0	# ‫שליחת משתנה מצב רמקול עכשיוי לשפופרת‪
		[[ "$speaker" == "B0" ]] &&  speaker="AF" || speaker="B0";	# ‫החלפת משתנה מצב רמקול‪
        fi
fi
done



לאחר מכן נוסיף קובץ בשם: /etc/udev/rules.d/026_usb-phone.rules
בו נגדיר את החוק שיגרום להפעלת הסקריפט בחיבור של ההתקן USB Phone שלנו, יש לשנות את <user> למשתמש שלכם:

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", SYSFS{idProduct}=="c080", SYSFS{idVendor}=="0851", MODE="0600", OWNER="<user>" RUN+="/bin/su <user> - -c '/home/<user>/bin/USB-phone.sh %n'"

הסבר מה כתבנו בעצם:
דבר ראשון החוק בודק התקן שזוהה כhidraw (בדיקת שיוויון בKERNEL ובSUBSYSTEM), ושיהיה לו מזהה התקן ספציפי תואם למה שראינו מקודם בlsusb (בדיקת שיוויון בSYSFS),
ואז מתחילים את הפעולות:

MODE="0600"

הרשאות כתיבה וקריאה לבעלים,

OWNER="<user>"

הפיכת המשתמש שבחרתם לבעלי הקובץ של ההתקן,

RUN+="/bin/su <user> - -c '/home/<user>/bin/USB-phone.sh %n'"

הרצה של הסקריפט כמשתמש הנבחר.
עכשיו ננתק ונחבר את הUSB-Phone, והסקריפט אמור לרוץ, כך שכשתלחצו על ספרה היא תשלח לשרת X (או לתוכנה הספציפית).
אם הוא לא רץ נסו לבצע כroot את הפעולה הזו:

/etc/init.d/udev restart

ואם עדיין לא עובד בבקשה דווחו לי וננסה להבין למה.

הסקריפט מוגדר שבהפעלתו הוא יחפש את החלון שכותרתו "SFLphone VoIP Client", אם החלון נמצא הלחיצות על השפורפרת יישלחו כמקשים לחלון זה,
אם החלון לא נמצא, המקשים יישלחו לחלון עם הפוקוס (כמו לחיצות על המקלדת),
אם אתם רוצים שהסקריפט יישלח את המקשים לחלון ספציפי אחר אז שנו בשורה זו לכותרת הרצוייה לכם:

להתעדכן בחדשות משורת הפקודה (bash)

בהמשך לזה וזה, גם אני בפוסט תגובה.

s="$(curl -s http://www.ynet.co.il/Integration/StoryRss1854.xml|iconv -f windows-1255)"; while [[ "$s" =~ ry\>\<title\>([^<]+) ]]; do s=${s/"${BASH_REMATCH[0]}"}; echo ${BASH_REMATCH[1]}; done|fribidi

באגים ידועים:
מכוער.
לא מקודד סימני HTML.

תלויות:
curl
iconv
fribidi – מומלץ, לא הכרחי.

אתר חיל מודיעין – פירצה לרגל שיפוצים

אתר חיל המודיעין סגור עקב שיפוצים, כבר מעל שבוע, מוגזם, אבל זה לא הכל.

בתחתית העמוד יש שורה:
"להורדת טפסי התחקיר הבטחוני יש לגלוש לכתובת : לחץ כאן"

הקישור "לחץ כאן" מוביל, ל…
http://tinyurl.com/Amanitur
tinyurl, אתר קיצור כתובות,
כתובת היעד האמיתית הינה:
http://www1.idf.il/SIP_STORAGE/AMAN/files///6 //44226.pdf

tinyurl הינו אתר חיצוני לא רק לחיל מודיעין אלא למדינת ישראל בכללה, השרת (לפי בדיקת whois של הIP) נמצא בהולנד.

למה זה רע או מה יכולים לעשות בעלי האתר tinyurl או פורץ שנכנס למערכותיהם:

א.  לשנות את מטרת הקישור, אפשרות אחת, למטרות תעמולה,
אפשרות שנייה למטרות גניבת פרטים: האם הייתם מעלים בדעתכם שאתר הנראה בדיוק כמו אתר חיל המודיעין, ונכנסנו אליו מתוך קישור שהופיע באתר חיל המודיעין, הוא לא אתר חיל המודיעין?
ומכאן אפשר לבקש מהמלש"ב להכניס את הפרטים שלו וכדו', ויש לנו פרטים על מועמד לגיוס לחיל מודיעין.

ב. בלי לשנות את הקישור, לבצע סטטיסטיקות אודות מלש"בים.

ג. צאצא של א' או ב', לבצע תקיפות ספציפיות על מחשבים שזוהו כמחשבים של מלש"ב של חיל מודיעין ע"פ המידע שנאסף וכך להגיע למידע נוסף בהמשך.

 

עדכון: האתר עודכן והקישור כמובן שנמחק

להורדת טפסי התחקיר הבטחוני יש לגלוש לכתובת : לחץ כאן

ביטויים רגולריים (regex) בbash

בעבר חיפשתי בגוגל מידע על ביטויים רגולריים – regex בשפת התכנות bash, התוצאות הציעו הצעות מגוונות איך לעשות את זה: grep ,awk ,sed וכדו'… אבל זה עדיין לא bash.

תוצאות אחרות דיברו על אפשרות בסגנון זה:

‎[[ "$var" =~ regex ]]‎

שאומנם נתן משהו מתוך bash אך לא כ"כ הבנתי איך ניתן להשתמש בזה.

לאחרונה חיפשתי שוב, והנה הפתרון שמצאתי:

כדי להכניס טקסט לתוך ביטוי רגולרי מבצעים

[[ "regex" =~ ^re(.*)x$ ]]‎

פעולה זו כאשר הביטוי הרגולרי נמצא תחזיר true ותיצור משתנה מערך: ‎${BASH_REMATCH[*]}‎, אם הביטוי לא יימצא הפעולה תחזיר false.
במערך זה באינדקס 0 יהיה את תוצאת הביטוי הרגולרי שנמצאה ובשאר המשתנים ההתאמות הפנימיות

דוגמה:

‭[[ "testregexexample" =~ st(r.*ex)([ejg]) ]];
echo ${BASH_REMATCH[@]};

יוציא את הפלט: stregexe regex e

testregexexample – תוצאת הביטוי במלואה, נכנסת לאינדקס 0.
testregexexample – התאמה ראשונה, נכנסת לאינדקס 1.
testregexexample – התאמה שנייה, נכנסת לאינדקס 2.


ולסיום, שאלה: האם BASH לא תומך פה בצורה תקינה בקידוד ISO-8859?
בקידוד זה תוצאות שהינם בתווים עבריים (לא בדקתי תווים לא לטיניים אחרים) לא מופעל עליהם באופן תקין regex:

[[ ‎"אבגדה‎" =~ ^‎אבג‎(.*) ]] && echo "${BASH_REMATCH[@]}"

בקידוד UTF-8 מוחזר: "אבגדה דה" – כמו שצריך להיות
בקידוד ISO-8859-8 מוחזר: "אבג"

[[ "‎אבגדה‎" =~ ^א‎.*‎ה‎ ]] && echo "${BASH_REMATCH[@]}" || echo "false"

בקידוד UTF-8 מוחזר: "אבגדה" – כמו שצריך להיות
בקידוד ISO-8859-8 מוחזר: "false"

לברכה ולא לקללה

לברכה ולא לקללה

איך לא בונים אתרים או פרצת אבטחה מעניינת באתר אופיס דיפו

הסיפור היה לפני מעל חצי שנה, ולא פורסם עד עכשיו עקב חוסר תגובה ברורה של אופיס דיפו.
אני לא יודע מה המצב של הבעיה עכשיו.

אדם שיש לי קשר איתו המשתמש באתר העסקי של אופיס דיפו http://bsdnet.officedepot.co.il התלונן בפני שאינטרנט אקספלורר (להלן IE) ופיירפוקס (להלן FF) מתנתקים ומתחברים באופן סינכרוני לאתר ומכיוון שכך הוא לא יכול להכנס לשני משתמשים באתר במקביל, דבר שהוא נהג לעשות קודם מטעמי נוחות,
שמעתי, הבעיה היתה נשמעת לי קצת מוזרה ובאתי לנסות למצוא מה הבעיה.

המחשבה הראשונה היתה,
מכיוון שיש אנשים המעוניינים בתכונה כמו זו של סינכרון חיבור של אתרים בין IE לFF יכול להיות שהכניסו את התכונה הזו לFF?
אומנם לא שמעתי על כך, אבל לא על כל התכונות של FF אני שומע לפני שהם יוצאות, בדקתי בchangelog (רשימת שינויים, תוכנות בעיקר) ולא מצאתי כל מידע על תוספת פיצ'ר בסגנון זה.
ואז חשבתי שבעצם מותקנת על אותו FF גם הרחבה בשם IE TAB שמיועדת לספק תאימות לIE אולי הוסיפו לה את הפיצ'ר הזה שמפריע לו, בדקתי וגם לזה לא מצאתי זכר.

ואז עלה במוחי המחשבה שבעצם אני ייבאתי בשבילו עוגיות מIE לא מזמן ואולי ייתכן שזה קשור לבעיה,
בדקתי את הנושא ע"י העתקת העוגיה למחשב נוסף ואכן מאז ביצוע העתקה כל החיבורים והניתוקים התבצעו בצורה סינכרונית (גם אם המחשב שבו נמצאת העוגיה ממוקם בIP שונה)

זמן "פג התוקף" של העוגיה היה בדקה האחרונה של השנה הנוצרית 2009
התוכן שלה הוא בסגנון זה:
ShopperManager%2FODONLINE=T5KRG4J3E74M8KDKHWLGW7X53B1R83C9
גם במקרה של ניתוק או התחברות לא יהיה כל שינוי בעוגיה אלא רק ברישום הנמצא על שרתי האתר של מה אומרת העוגיה (מנותק \ משתמש X מחובר)

דוגמה לניצול אפשרי של פרצה זו יכולה להיות ע"י ישיבה של מספר שניות במחשב המשמש את הקורבן,
ביצוע של העתקת העוגיה שתהיה יעילה גם במקרים ומדובר בקורבן יותר אחראי מהנורמה שטורח לנתק את המשתמש שלו על מנת למנוע שימוש בלתי מורשה,
לאחר מכן כל אימת שהקורבן יתחבר למשתמש שלו באתר יהיה בידי התוקף את כל האפשרויות שאמורות להיות רק ברשות הקורבן ללא כל סימן על מחשב הקורבן מכיוון שלא הוחדר למחשב שום דבר,
את זה עלול לנצל התוקף לדברים כגון ריגול עסקי ע"י מעקב אחר היסטוריית ההזמנות או גרימת נזקים ע"י הזמנות מזויפות ועוד ועוד כיד הדמיון הרעה עליו…