As a general design principle, "Session" should be an interface, or an abstract base class, so that you can properly abstract it.
If the library/external assembly doesn't allow that, resorting to calling an internal member of the base class, then there's little you can do to make that library more test-friendly.
One way would be invoking some of these internals yourself using reflection.
The mock.Object property will contain an instance of a class that derives from the T you specify for the mock. therefore, if it inherits some behavior, you can still invoke that using reflection, but there's no way to set an expectation on that. And that's by design. You cannot mock internal stuff.
HTH