I haven't actually done this in code but I was planning on using a method like this. When your ball hits an object, you know it's current position and the location of where the collision occurred, ie. OBJECT COLLISION X/Y/Z. What I would do is use the OBJECT INTERSECT /INTERSECT OBJECT (Haven't got the help on this machine!), to create three intersect lines very close to each other in the direction from the center of your ball to the collision point. Each result would yield three intersect line lengths. Haven't got the math here but if this was converted to a vector, you can compute the surface normal by using the three lengths subtracted from their point of origins. These three new points can be used to compute the normal of the surface that the object collided with.
I haven't explained this very well but try to imagine from the center of your ball, three lines. All three will hit the surface along the vector from the center of your ball to the point of intersection where the collision occured. Each line is slightly offset from this vector. Once you've obtained the INTERSECT OBJECT length, subtract this length from the co-ordinates of where the lines begin, the longest length I think. Use the three points to computer the normal. You may need to play around with the idea and maybe someone else will come up with a different possibility.